我有一个具有多个值的选择。我需要设置这些值但不确定如何完成。
var values= data.record.execId;
$.each(values.split(","), function(i,e){
data.form.find('select[name=execs]')
.val(e);
});
代码仅设置两个值中的一个。我做错了什么?
编辑:
字符串值为:12,14,15
编辑#2
在我疲惫的昏迷中,我忘了包含一行代码。以下是我认为应该是完整的每个循环:
$.each(values.split(","), function(i,e){
data.form.find('select[name=execs]')
.attr({multiple:'multiple',name:'execs[]'}) <-- Forgot to include this
.val(e);
});
答案 0 :(得分:1)
尝试这样的事情
var values = "12,14,15";
$.each(values.split(","), function (i, e) {
$("select[name='execs'] option[value='" + e + "']").prop("selected", true);
});
不要忘记标记选择多个
<select name="execs" id="strings" multiple style="width:100px;">
<option value="12">A</option>
<option value="13">B</option>
<option value="14">C</option>
<option value="15">D</option>
<option value="16">E</option>
</select>
已编辑的代码
你在每个循环中重置多个属性,所以在最终循环中你只得到一个值
var values = "12,14,15";
var select = data.form.find("select[name='execs']");
select.attr({multiple:'multiple',name:'execs[]'});
$.each(values.split(","), function (i, e) {
$("option[value='" + e + "']",select).prop("selected", true);
});
答案 1 :(得分:1)
您只需将数组传递给val()
:
data.form.find("select[name=execs]").val(data.record.execId.split(","));
正如documentation所说:
传递元素值数组可以匹配
<input type="checkbox">
,<input type="radio">
和<option>
<select multiple="multiple">
将被选中。