如何使用jquery检查当前表单中的所有复选框?

发布于 2024-10-02 06:51:26 字数 1373 浏览 3 评论 0原文

考虑这个简单的示例代码:

<form name="text" id="frm1" method="post">
  <input type="checkbox" name="name[]" value="1000"> Chk1<br>
  <input type="checkbox" name="name[]" value="1001"> Chk2<br>
  <input type="checkbox" name="name[]" value="1002"> Chk3<br>
  <input type="checkbox" name="name[]" value="1003"> Chk4<br>
  <input type="checkbox" id="select_all"/> Select All<br>  
</form>

<form name="text" id="frm2" method="post">
  <input type="checkbox" name="name[]" value="4000"> Chk1<br>
  <input type="checkbox" name="name[]" value="4001"> Chk2<br>
  <input type="checkbox" name="name[]" value="4002"> Chk3<br>
  <input type="checkbox" name="name[]" value="4003"> Chk4<br>
  <input type="checkbox" id="select_all"/> Select All<br>  

我试图让 Select All 在每个表单中工作(表单是在我的生产代码中动态生成的,并且具有不同的、不同的名称)

我正在使用这个 jquery 但 select_all 仅适用于第一个表单;它对第一个以下的表单没有影响。

$('#select_all').change(function() {
  var checkboxes = $(this).closest('form').find(':checkbox');
  if($(this).is(':checked')) {
      checkboxes.attr('checked', 'checked');
  } else {
      checkboxes.removeAttr('checked');
  }
});

我不知道如何检查表单 ID 中包含的任何 :checkbox 中的所有复选框。

有人能指出我正确的方向吗?

非常感谢

Consider this simple example code:

<form name="text" id="frm1" method="post">
  <input type="checkbox" name="name[]" value="1000"> Chk1<br>
  <input type="checkbox" name="name[]" value="1001"> Chk2<br>
  <input type="checkbox" name="name[]" value="1002"> Chk3<br>
  <input type="checkbox" name="name[]" value="1003"> Chk4<br>
  <input type="checkbox" id="select_all"/> Select All<br>  
</form>

<form name="text" id="frm2" method="post">
  <input type="checkbox" name="name[]" value="4000"> Chk1<br>
  <input type="checkbox" name="name[]" value="4001"> Chk2<br>
  <input type="checkbox" name="name[]" value="4002"> Chk3<br>
  <input type="checkbox" name="name[]" value="4003"> Chk4<br>
  <input type="checkbox" id="select_all"/> Select All<br>  

I'm trying to get Select All to work in each form (forms are dynamically generated in my production code and have different, varying names)

I'm using this jquery but select_all only works for only the first form; it has not affect on forms below the first.

$('#select_all').change(function() {
  var checkboxes = $(this).closest('form').find(':checkbox');
  if($(this).is(':checked')) {
      checkboxes.attr('checked', 'checked');
  } else {
      checkboxes.removeAttr('checked');
  }
});

I can't figure out how to Check All checkboxes in any :checkbox contained within the form ID.

Can someone point me in the right direction?

Many thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(6

简单爱 2024-10-09 06:51:26

您有多个具有相同 ID 的元素,这是无效的 HTML,并导致了您所看到的问题。将 id="select_all" 更改为 class="select_all",将 $('#select_all') 更改为 $('. select_all'),你应该没问题。

You have multiple elements with the same ID, which is invalid HTML and is causing the problem you're seeing. Change id="select_all" to class="select_all", and $('#select_all') to $('.select_all'), and you should be good.

行雁书 2024-10-09 06:51:26

您有两个 id 为 select_all 的元素;这是不允许的。将其更改为一个类并尝试以下操作:

$('.select_all').change(function() {
  var checkboxes = $(this).closest('form').find(':checkbox');
  checkboxes.attr('checked', $(this).is(':checked'));
});

You have two elements with id select_all; that's not allowed. Change that to a class and try this:

$('.select_all').change(function() {
  var checkboxes = $(this).closest('form').find(':checkbox');
  checkboxes.attr('checked', $(this).is(':checked'));
});
触ぅ动初心 2024-10-09 06:51:26

ID 是唯一的。你有两个。如果您想要多个元素,请使用 class="select_all"$('.select_all')

IDs are unique. You have two. If you want multiple elements, use class="select_all" and $('.select_all')

爱格式化 2024-10-09 06:51:26
$('#select_all').click(function() {
    $("input:checkbox", $(this).closest('form')).attr("checked", this.checked)
});

不过,您只需要一项 ID 为 select_all 的项目即可实现此功能。如果您可以更改为 select_all 类,那么只需将 # 替换为 . 就可以了

$('#select_all').click(function() {
    $("input:checkbox", $(this).closest('form')).attr("checked", this.checked)
});

However, you will need only one item with id select_all for this to work. If you can change to a class of select_all then just replace the # with a . and you're good to go

雨巷深深 2024-10-09 06:51:26

试试这个:

$("#select_all").click(function()               
        {
            var checked_status = this.checked;
            $("input[@name=name]").each(function()
            {
                this.checked = checked_status;
            });
        });

Try this:

$("#select_all").click(function()               
        {
            var checked_status = this.checked;
            $("input[@name=name]").each(function()
            {
                this.checked = checked_status;
            });
        });
千鲤 2024-10-09 06:51:26

您不能拥有两个具有相同 ID 的项目。
示例

html:

<form name="text" id="frm1" method="post">
  <input type="checkbox" name="name[]" value="1000"> Chk1<br>
  <input type="checkbox" name="name[]" value="1001"> Chk2<br>
  <input type="checkbox" name="name[]" value="1002"> Chk3<br>
  <input type="checkbox" name="name[]" value="1003"> Chk4<br>
  <input type="checkbox" id="select_all_1"/> Select All<br>  
</form>

<form name="text" id="frm2" method="post">
  <input type="checkbox" name="name[]" value="4000"> Chk1<br>
  <input type="checkbox" name="name[]" value="4001"> Chk2<br>
  <input type="checkbox" name="name[]" value="4002"> Chk3<br>
  <input type="checkbox" name="name[]" value="4003"> Chk4<br>
  <input type="checkbox" id="select_all_2"/> Select All<br>  
</form>

JS:

$(function() {

    $('#select_all_1, #select_all_2').bind('click', function(event) {

        var 
            ref = this,
            refChecked = this.checked;

        $(this.form).find('input[type="checkbox"]').each(function(i, el) {
            if(this != ref)
              this.checked = refChecked;
        });

    });

});

you can not have two items with the same ID.
example

html:

<form name="text" id="frm1" method="post">
  <input type="checkbox" name="name[]" value="1000"> Chk1<br>
  <input type="checkbox" name="name[]" value="1001"> Chk2<br>
  <input type="checkbox" name="name[]" value="1002"> Chk3<br>
  <input type="checkbox" name="name[]" value="1003"> Chk4<br>
  <input type="checkbox" id="select_all_1"/> Select All<br>  
</form>

<form name="text" id="frm2" method="post">
  <input type="checkbox" name="name[]" value="4000"> Chk1<br>
  <input type="checkbox" name="name[]" value="4001"> Chk2<br>
  <input type="checkbox" name="name[]" value="4002"> Chk3<br>
  <input type="checkbox" name="name[]" value="4003"> Chk4<br>
  <input type="checkbox" id="select_all_2"/> Select All<br>  
</form>

JS:

$(function() {

    $('#select_all_1, #select_all_2').bind('click', function(event) {

        var 
            ref = this,
            refChecked = this.checked;

        $(this.form).find('input[type="checkbox"]').each(function(i, el) {
            if(this != ref)
              this.checked = refChecked;
        });

    });

});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文