multiselect,语法错误,无法识别的表达式:option [value = cc dd]

时间:2017-03-16 12:59:43

标签: javascript jquery twitter-bootstrap option multi-select

我有一个多选,看起来像这样:

<select name="test" id="test" multiple="multiple">
<option value="aa" id="at1">AA</option>
<option value="bb" id="at1">BB</option>
<option value="cc dd" id="at1">CC DD</option>
<option value="ee" id="at1">EE</option></i>
</select>

现在我正在使用此代码查找值并选择选项:

var at=$("#divat").text();//at="bb,cc dd,ee"
atMulti = at.split(',');//atMulti=['bb','cc dd','ee']
$.each(atMulti,function(n,value){
    $('option[value='+value+']',$('#test)).prop('selected',true);
}

我在

中遇到错误
$("option[value='"+value+"']",$('#test)).prop('selected',true);}

错误代码

Syntax error, unrecognized expression: option[value=cc dd]

如果我将代码修改为

$.each(atMulti,function(n,value){
    $("option[value='"+value+"']",$('#test)).prop('selected',true);
}

没有错误,只有第一个匹配的值

<option value="bb" id="at1">BB</option>

将被选中。如何解决这个问题?

3 个答案:

答案 0 :(得分:2)

我修改了一些语法并尝试不要更改代码,因为我不知道你想要实现的目标......

所以请试试这个:

https://jsfiddle.net/dq1yt2kv/

<select name="test" id="test" multiple="multiple">
  <option value="aa">AA</option>
  <option value="bb">BB</option>
  <option value="cc dd">CC DD</option>
  <option value="ee">EE</option>
</select>

JS

var at= "bb,cc dd,ee";
atMulti = at.split(',');//atMulti=['bb','cc dd','ee']
$.each(atMulti,function(n,value) {
    $("option[value='"+value+"']").prop('selected',true);
});

答案 1 :(得分:0)

在相同的html页面中使用相同id的多个元素会产生invalid标记。所以尝试如下:

&#13;
&#13;
var at="aa,bb,cc dd,ee";//values to be select
atMulti = at.split(',');//atMulti=['bb','cc dd','ee']
$.each(atMulti,function(n,value){
    $("option[value='"+value+"']").prop('selected',true);//remove $("#test") from here

});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="test" id="test" multiple="multiple">
<option value="aa">AA</option>
<option value="bb" >BB</option>
<option value="cc dd">CC DD</option>
<option value="ee">EE</option>
</select>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

这:

$.each(atMulti,function(n,value){
    $("option[value='"+value+"']",$('#test)).prop('selected',true);
}

无法正常工作,因为您有两个语法错误。 然后你有一个无处不在的流氓</i>和相同身份的四倍,这应该是唯一的。

var at="bb,cc dd,ee";
atMulti = at.split(',');//atMulti=['bb','cc dd','ee']
$.each(atMulti,function(n,value){
     $("option[value='"+value+"']",$('#test')).prop('selected',true);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="test" id="test" multiple="multiple">
  <option value="aa" >AA</option>
  <option value="bb" >BB</option>
  <option value="cc dd" >CC DD</option>
  <option value="ee" >EE</option>
</select>