今天早上我问了一个类似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]);
我必须在这里应用不同的技巧吗?感谢
答案 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);