jquery - 选择带有js数组名称的所有复选框

时间:2010-02-26 10:13:44

标签: php jquery arrays forms checkbox

我想在这样的表单中使用JQuery“check all”函数: http://jetlogs.org/jquery/jquery_select_all.html

我的问题是我是从php脚本生成我的表单,而且我不知道确切地提前有多少个复选框。 我使用“数组”命名约定来获取$ _POST数据中所有选中的复选框值... 所以我的复选框是这样的:

<input type="checkbox" name="items[]" value="<?php echo $id ?>">

但是这个JQuery声明不起作用:

$("input[@name=items[]]").each(function()    
{    
    this.checked = checked_status;    
});

可能是因为我的“项目”末尾的“[]”弄乱了JQuery声明......我试着像这样编写@ name = items []:“@ name = items []”,并且在[和]之前放一些反斜杠所以它们不被视为特殊字符,但它没有用......

如果有人知道解决方案并且愿意分享,那就太棒了!! :)

4 个答案:

答案 0 :(得分:55)

使用\\(无空格)转出内部括号 - 它应该解决问题。

这个选择器对我有用:

$('input[name=items\\[\\]]')

答案 1 :(得分:12)

尝试使用

$('input[name="items[]"]')

无需@并使用"。请注意,引号外的选择器为'。否则可能会导致解析错误。

答案 2 :(得分:4)

首先,您的name属性应该用于设置具有相同名称的+1元素。它实际上与id属性相同,并且对于引用而言每个元素应该是唯一的,但对于您来说情况并非如此。

尝试使用class属性,它是为你想做的事情而制作的!

另一件事是,在您的代码中,您只能将复选框设置为“已选中”,但永远不要取消选中,此代码会将复选框设置为选中true或false,具体取决于它从被点击元素获取的属性。

你可以这样做:

使用ID

设置所有复选框
 <input type="checkbox" id="checkAll">

然后设置应选中/取消选中一个类

的所有复选框
<input type="checkbox" class="checked">

你可以在jQuery中做这样的事情

$("#checkAll").click( function(){
 var checkedValue = $(this).attr("checked");
 $("input.checked").attr("checked", checkedValue); });

这会将检查了类的所有复选框更改为与具有id checkAll

的复选框相同的已检查属性

答案 3 :(得分:2)

$("input[name='smsid[]']")

这段代码对我来说很好......