Javascript 使用jquery按值选择多选下拉列表

Javascript 使用jquery按值选择多选下拉列表,javascript,jquery,Javascript,Jquery,今天早上我问了一个类似的问题,如何根据下拉列表的值而不是顺序来选择下拉列表 现在的问题是如何使用多选下拉菜单,并根据选项的值而不是顺序来选择选项。(例如,我想通过各自的主键1和4选择a1和a3) a1 a2 a3 按顺序排列的旧方法: for (i=0; i<data[0].fields['sales_item'].length;i++) $('#id_deals-sales_item>option:eq(' + (data[0].fields['sales_item']

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

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


a1
a2
a3
按顺序排列的旧方法:

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);
for(i=0;i试试这个

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);​

对于(i=0;i这是因为您在每次迭代中覆盖以前选择的值,您应该向
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);
var-vals=[];

对于(i=0;i+1),这是有效的,而在undefined的答案中传入数组则没有
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);​
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);