0

(n) 個のリストボックスがあります。関数を実行するボタンがあり、その関数内で最初のリストボックスの選択されたアイテムを取得しようとしています。最初のリストボックスで選択されているインデックス/アイテムは何でも、残りのリストボックスで同じオプションを選択します。すべてのリストボックスには、まったく同じリスト項目があります。

リストボックス:

@Html.ListBoxFor(model => model.ServiceTypes, new MultiSelectList(RunLog.Domain.Lists.GlobalList.PartsServiceTypes(), "ID", "Name"), new { style = "width: 200px; height: 80px;", id = "lstbox_@(model.PartID)" })

ボタン:

@*<input id="button" type="button" class="art" onclick="dosomething()" name="broadcast" value="+" />*@

JS 関数:

function dosomething() {

    //The following line returns all the listboxes
    var listBoxes =  var listBoxes = $('select[multiple]');

    //In the following line I am trying to access the items from the first listbox but not sure how to access it, would it be by index. it does not work
    var x = $('listBoxes[1] option:selected')

    //In the following loop I would iterate through the selected items from the first listbox and select them in the rest of the listboxes
    for (var i = 0; i < listBoxes.length; i++) {
        var element = listBoxes[i];

//      if (element.multiple) {
//          alert("im a multilistbox");
//      }

    }
}
4

1 に答える 1

0

次のようなことを試してください:

@{
var list = new List<string>();
list.Add("one");
list.Add("two");
list.Add("three");
}

@Html.ListBox("listbox", new SelectList(list), new { id = "listbox", multiple = "multiple" })

<input type="button" value="Click me!" onclick="GetSelected()" />

<script type="text/javascript">
    function GetSelected() {
        var listboxitems = document.getElementById("listbox");

        for (var i = 0; i < listboxitems.length; i++) {
            if (listboxitems[i].selected) {
                alert(listboxitems[i].textContent);
            }
        }
    }
</script>

明らかに、次のようにリスト項目のテキスト コンテンツを保存できます。

var element = listboxitems[i].textContent;  

更新:
コメントに応じて、次の例を試してください。

@{
    var list = new List<string>();
    list.Add("one");
    list.Add("two");
    list.Add("three");

    int i;

    for(i = 0; i < 5; i++)
    {
        @Html.ListBox("listbox"+i, new SelectList(list), new { id = "listbox" + i, multiple = "multiple" })
    }
}

<input type="button" value="Click me!" onclick="GetSelected()" />

<script type="text/javascript">
function GetSelected() {
    var index = @i;

    var firstListBoxItems = document.getElementById("listbox0");

    for (n = 1; n < index; n++) {
        var currentListBoxItems = document.getElementById("listbox"+n);

        for (var i = 0; i < firstListBoxItems.length; i++) {
            if (firstListBoxItems[i].selected) {
                currentListBoxItems[i].value = "NewValue"+i;
            }
        }
    }
}
</script>  

ランダムなリストを再度取得すると、デバッガーを使用して検査し、値が変更されたことを確認できます。

私はまだ Web プログラミングに慣れていないので、これは見苦しく見えるかもしれませんが、タスクを達成する方法のアイデアが得られるはずです。

于 2012-08-02T19:05:57.547 に答える