我有一个多选,看起来像这样:
<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>
将被选中。如何解决这个问题?
答案 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
标记。所以尝试如下:
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;
答案 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>