我有一个多选:
<select name='strings' id="strings" multiple style="width:100px;">
<option value="Test">Test</option>
<option value="Prof">Prof</option>
<option value="Live">Live</option>
<option value="Off">Off</option>
<option value="On">On</option>
</select>
我从数据库加载数据。然后我有一个像这样的字符串:
var values="Test,Prof,Off";
如何在多重选择中设置此值?已经尝试更改数组中的字符串并将其作为值放在多个中,但不起作用......! 有人可以帮我弄这个吗?致谢!!!
答案 0 :(得分:110)
使用动态选择器中的值迭代循环,该动态选择器使用属性选择器。
var values="Test,Prof,Off";
$.each(values.split(","), function(i,e){
$("#strings option[value='" + e + "']").prop("selected", true);
});
答案 1 :(得分:91)
在jQuery中:
$("#strings").val(["Test", "Prof", "Off"]);
或纯JavaScript:
var element = document.getElementById('strings');
var values = ["Test", "Prof", "Off"];
for (var i = 0; i < element.options.length; i++) {
element.options[i].selected = values.indexOf(element.options[i].value) >= 0;
}
jQuery在这里做了重要的抽象。
答案 2 :(得分:16)
只需为jQuery val函数提供一组值:
var values = "Test,Prof,Off";
$('#strings').val(values.split(','));
并以相同的格式获取所选值:
values = $('#strings').val();
答案 3 :(得分:6)
querySelectorAll
函数捕获每个选项并拆分values
字符串。Array#forEach
迭代values
数组中的每个元素。Array#find
查找与给定值匹配的选项。selected
属性设置为true
。 注意:Array#from
将类似数组的对象转换为数组,然后您可以在其上使用Array.prototype
函数,例如找到或地图。
var values = "Test,Prof,Off",
options = Array.from(document.querySelectorAll('#strings option'));
values.split(',').forEach(function(v) {
options.find(c => c.value == v).selected = true;
});
&#13;
<select name='strings' id="strings" multiple style="width:100px;">
<option value="Test">Test</option>
<option value="Prof">Prof</option>
<option value="Live">Live</option>
<option value="Off">Off</option>
<option value="On">On</option>
</select>
&#13;
答案 4 :(得分:1)
基本上做一个values.split(',')
然后遍历生成的数组并设置Select。
答案 5 :(得分:1)
出于某种原因你不使用jQuery或ES6?这可能会对您有所帮助:
var values = "Test,Prof,Off";
var splitValues = values.split(',');
var multi = document.getElementById('strings');
multi.value = null; // Reset pre-selected options (just in case)
var multiLen = multi.options.length;
for (var i = 0; i < multiLen; i++) {
if (splitValues.indexOf(multi.options[i].value) >= 0) {
multi.options[i].selected = true;
}
}
<select name='strings' id="strings" multiple style="width:100px;">
<option value="Test">Test</option>
<option value="Prof">Prof</option>
<option value="Live">Live</option>
<option value="Off">Off</option>
<option value="On" selected>On</option>
</select>
答案 6 :(得分:0)
var groups = ["Test", "Prof","Off"];
$('#fruits option').filter(function() {
return groups.indexOf($(this).text()) > -1; //Options text exists in array
}).prop('selected', true); //Set selected
答案 7 :(得分:0)
这是某些替换问题的答案|
ssh_url
此更正是正确的,但|最后,它看起来应该是\\
var mystring = "this|is|a|test";
mystring = mystring.replace(/|/g, "");
alert(mystring);