0

使用 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);
    }
});
4

2 回答 2

3

您传递的是一个包含单个元素的数组,即 string 1,7,20,而不是包含三个元素的数组,即 strings和1,所以我不确定您为什么期望它能够工作。如果您的输入实际上是字符串,您可以用逗号将其拆分以获取一个数组,其中您的数字作为字符串:720

var myString = '1,7,20';
var myArray = myString.split(',');

然后传递myArray$.each()函数调用。

您传递给的函数内部的代码也存在问题$.each()。如果你调用.val()一个包含多个元素的 jQuery 对象,它通常只会返回第一个元素的值。您需要再次遍历元素集合,并使用this来引用当前元素。

$.each(myArray, function(index, item){
    $('.category').each(function(){
        if(this.value === item) {
            this.checked = true;
        }
    });
});
于 2012-04-19T11:32:12.397 回答
0

顺便说一句,从语义上讲,您应该使用filter。您可以做同样的事情,同时提高代码的可读性。

于 2012-04-19T11:38:52.160 回答