3

今天早上我问了一个类似的问题,如何按值而不是顺序选择下拉列表。

现在的问题是如何使用多选下拉菜单并按值而不是顺序选择选项。(例如,我想通过它们各自的主键 1 和 4 选择 a1 和 a3)

<select id="id_deals-sales_item" multiple="multiple">
  <option value="1">a1</option>
  <option value="2">a2</option>
  <option value="4">a3</option>
</select>

按顺序排列的旧方法:

for (i=0; i<data[0].fields['sales_item'].length;i++)
    $('#id_deals-sales_item>option:eq(' + (data[0].fields['sales_item'][i]) + ')').prop('selected', true);

我希望在这里使用 val() 应用相同的解决方案,但它不起作用。

for (i=0; i<=data[0].fields['sales_item'].length;i++)
    $('#id_deals-sales_item').val(data[0].fields['sales_item'][i]); 

我必须在这里应用不同的技巧吗?谢谢

4

2 回答 2

1

尝试这个

for (i=0; i<=data[0].fields['sales_item'].length;i++)
    $("#id_deals-sales_item option[value='" +data[0].fields['sales_item'][i] + "']").prop('selected', true);​
于 2012-09-25T23:15:12.063 回答
1

那是因为您在每次迭代中都覆盖了先前选择的值,您应该将一个数组传递给该val方法,试试这个:

var vals = [];
for (i=0; i<=data[0].fields['sales_item'].length;i++) {
    vals.push(data[0].fields['sales_item'][i]); 
}

$("#id_deals-sales_item").val(vals);
于 2012-09-25T23:16:33.013 回答