需要 JQuery 标记从数据库的列表/数组中选中的复选框

Need JQuery to mark checkboxes checked from list/array from database

本文关键字:数组 JQuery 复选框 列表 数据库 需要      更新时间:2023-09-26

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

您传递的是一个数组,其中包含一个字符串1,7,20,而不是一个包含三个元素的数组,这些元素是字符串1720,所以我不确定为什么你期望它工作。如果你的输入实际上是字符串,你可以把它拆分在逗号上,得到一个以你的数字作为字符串的数组:

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;
        }
    });
});

顺便说一下,从语义上讲,你应该使用过滤器。您可以执行相同的操作,同时提高代码的可读性。