1

Html.DropDownListFor、テキストボックス、およびリスト「sourceWatchListParameters」を含むモデルがあります。

私の最終目標は、ドロップダウンリストでアイテムが選択されたときに、その特定のsourceWatchListのプロパティ「DefaultParameter」をテキストボックスに入力することです。

$(function() {
    $('select#WatchListDropDown').change(function () {
        var e = document.getElementById("#WatchListDropDown").selectedIndex.value;

        @foreach (var watchlist in Model.sourceWatchListParameters)
        {
            @:if (watchlist.WatchListId == e)
            {
                @: var def = document.getElementById("expDefault");
                @: def.value = watchlist.DefaultParameter;
            }
        }

    })
});

関数は正しく呼び出されますが、正しい sourceWatchListParameter を見つけてその DefaultParameter を表示するためのロジック/構文がわかりません。今のところ、選択時にテキストボックスに変化は見られません。これを書き直す簡単な方法があると確信しています。

ご指導ありがとうございます

4

2 に答える 2

2

次のようなものがあるとします。

@Html.DropDownListFor(
     m => m.WatchListDropDown, 
     Model.SourceListWatchListDropDown() ...)

ここでは、値 ('id') と説明しかありませんが、次のようにして 3 つの値を取得できます :

<select id="WatchListDropDown" name="WatchListDropDown">
@foreach (var wp in Model.sourceWatchListParameters)
{
   <option value="@wp.WatchListId" data-defparam="@wp.DefaultParameter">@wp.Description</option>
}
</select>

この場合、デフォルトのパラメーターを取得する必要がある場合は、これを行うだけで済みます。

$(function() {
    $('#WatchListDropDown').bind('change', function () {
        var newValue = $(this).find('option:selected').data('defparam');
        $('#expDefault').val(newValue);;
    })
});

ページをレンダリングするためにすでに値が割り当てられている場合は、次のことができます。

   $('#WatchListDropDown').bind('change', function () {
       ...
   }).trigger('change');


@Jonesy のソリューションの編集結果

「Model.sourceWatchListParameters」に次の値があるとします。

[
 {
    WatchListId = 1,
    Description = "Description 1"
 },
 {
    WatchListId = 3,
    Description = "Description 3"
 },
 {
    WatchListId = 3,
    Description = "Description 3"
 }
]

コードは次のようになります。

$('select#WatchListDropDown').change(function () {

    if ($('#WatchListDropDown').val() == "1")
        $("#expDefault").val("Description 1");
    }

    if ($('#WatchListDropDown').val() == "2")
        $("#expDefault").val("Description 2");
    }

    if ($('#WatchListDropDown').val() == "3")
        $("#expDefault").val("Description 3");
    }
})
于 2013-08-09T18:34:24.997 に答える