如何设置选择多个值?

时间:2013-11-23 09:26:13

标签: jquery

我有一个具有多个值的选择。我需要设置这些值但不确定如何完成。

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

2 个答案:

答案 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">将被选中。