【问题标题】:jquery - select all checkboxes with js array namejquery - 选择所有带有 js 数组名称的复选框
【发布时间】:2011-01-21 09:35:18
【问题描述】:

我想以这样的形式使用 JQuery“检查所有”功能: 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[]”,然后在 [ 和 ] 之前放一些反斜线,这样它们就不会被视为特殊字符,但它不起作用......

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

【问题讨论】:

  • 尝试使用该类,jQuery 的内置搜索引擎将为您完成工作,而不是使用 for 循环循环所有元素!
  • checked_status 的值是多少?设置在哪里?

标签: php jquery arrays forms checkbox


【解决方案1】:

\\(没有空格)转义内部括号 - 它应该可以解决问题。

这个选择器适合我:

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

【讨论】:

  • 不,这不起作用,正如我在帖子中所说:“......并在 [ 和 ] 之前放置一些反斜杠 (= \ ) 所以......”
  • 检查我的编辑 - 你应该从你的选择器中删除 @ 并使用双反斜杠
  • 是的!奇迹般有效!感谢大家的帮助!其他建议的解决方案也可能有效!但这似乎是最容易实现的! :)
  • 不要使用name属性来做这样的事情!而且您的代码变得超级难以阅读!
  • 他问为什么他的声明不起作用,我给出了直接、正确的答案。你有什么问题?是的,删除 name 属性要好得多,并将所有复选框放在一个 div 中并执行 $('#container input') 之类的操作 - 但这不是他的问题的一部分。
【解决方案2】:

尝试使用

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

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

【讨论】:

  • 谢谢,@Emo。它成功了。接受的带有双反斜杠的答案的方法不起作用(似乎新版本不支持它)。
【解决方案3】:

首先,你的name属性应该用来设置+1同名元素。它实际上与 id 属性相同,除了引用之外,每个元素都应该是唯一的,但对您而言并非如此。

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

另一件事是,在您的代码中,您只能将复选框设置为“已选中”,但永远不要取消选中,此代码将根据从单击元素获得的属性将您的复选框设置为选中真或假.

你可以这样做:

使用 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 的复选框相同的选中属性

【讨论】:

    【解决方案4】:
    $("input[name='smsid[]']")
    

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

    【讨论】:

    • 解释你的答案为什么有效会让你的帖子更有帮助。
    猜你喜欢
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-19
    • 2014-04-12
    • 1970-01-01
    • 2013-01-29
    • 1970-01-01
    相关资源
    最近更新 更多