1

私はこの複数選択リストを持っています:

<select id="vendors" name="vendors" multiple="multiple">
    <option value="1">A</option>
    <option value="2">B</option>
    <option value="3">C</option>
    <option value="4">D</option>
    <option value="5">E</option>
</select>

ページが読み込まれると、選択リストで選択する必要のあるIDのリストが読み込まれます。これが私がそれをやろうとしている方法です:

var vendors = GetVendorArray();  // list of vendor ids I want selected

$.each(vendors, function(index, item) {
    $("#vendors").filter(function() {
        return $(this).val() == item; 
    }).attr('selected', true);
});

しかし、これは機能せず、どのアイテムも選択されていません。誰かが私が間違っていることを知っていますか?

4

2 に答える 2

4

最も簡単な方法は、配列全体を値としてselectusingに渡すだけval()です。mulitple select値は配列です

$('#vendors').val(  GetVendorArray())

デモ: http://jsfiddle.net/sPKAY/

あなたが取ったアプローチの問題は、optionタグをループしていませんでした

于 2013-03-04T02:13:42.053 に答える
1

filter一致した要素のセットを減らして、追加のセレクター/コールバック fn に一致させます。出力。<option>値が配列の内容と一致するかどうかに基づいてオプションを選択しようとしているため、ドロップダウン リスト自体ではなく、要素をターゲットにする必要があります。

var vendors = GetVendorArray();  // list of vendor ids I want selected

$.each(vendors, function(index, item) {

    //you're filtering options, not the list itself
    $("#vendors > option").filter( function() {
        return $(this).val() == item; 
    }).prop('selected', true); //use .prop, not .attr
});
于 2013-03-04T02:08:03.927 に答える