使用SQL 2008 Server和最新的JQuery。如果我从数据库中查询列并获取列表/数组,如何在每个复选框组中选中“已选中”复选框?示例复选框组和列表如下:
类别'1,7,20'的列表(Jquery应标记值为1,7,10的复选框) 喜欢'2,3'的列表(Jquery应该选中值为2和3的复选框)
<form>
<input type="checkbox" class="category" name="category" value="14" />Blah
<input type="checkbox" class="category" name="category" value="1" />Blah1
<input type="checkbox" class="category" name="category" value="7" />Blah2
<input type="checkbox" class="category" name="category" value="20" />Blah3
<input type="checkbox" class="likes" name="likes" value="17" />Apple
<input type="checkbox" class="likes" name="likes" value="3" />Apple1
<input type="checkbox" class="likes" name="likes" value="2" />Apple2
<input type="checkbox" class="likes" name="likes" value="13" />Apple3
</form>
我尝试了以下JQuery代码,但它不起作用:
$.each(['1,7,20'], function (index, item) {
if ($('.category').val() === item) {
$(".category").prop("checked", true);
}
});
答案 0 :(得分:2)
您传递的数组包含字符串1,7,20
的单个元素,而不是包含三个元素1
,7
和20
的数组所以我不确定你为什么期望它能起作用。如果您的输入实际上是字符串,则可以将其拆分为逗号以获取一个数字为数组的数组:
var myString = '1,7,20';
var myArray = myString.split(',');
然后将myArray
传递给$.each()
函数调用。
您传递给$.each()
的函数中的代码也存在问题。如果你在包含多个元素的jQuery对象上调用.val()
,它通常只返回第一个元素的值。您需要再次迭代元素集合,并使用this
来引用当前元素。
$.each(myArray, function(index, item){
$('.category').each(function(){
if(this.value === item) {
this.checked = true;
}
});
});
答案 1 :(得分:0)
顺便说一句,从语义上讲,你应该使用filter。您可以做同样的事情,同时提高代码的可读性。