使用jquery按值选择多选DropDown

时间:2012-09-25 23:09:27

标签: javascript jquery

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

现在的问题是如何使用多选下拉列表并按值而不是序列选择选项。 (例如,我想通过各自的主键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]); 

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

2 个答案:

答案 0 :(得分: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);​

答案 1 :(得分: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);