【问题标题】:Jquery checkboxes multi functionJquery复选框多功能
【发布时间】:2012-06-28 20:58:38
【问题描述】:

以下两个 jquery 脚本遇到问题

$(document).ready(function() {
    var $checkboxes = $("#table_pdf_view input[type=checkbox]");
    $checkboxes.on('change', function() {
        var ids = $checkboxes.filter(':checked').map(function() {
            return this.id;
        }).get().join(',');
        $('#multi_client_id').val(ids);
    });
});
//-->
<!--
$(document).ready(function(){ // 1
    // 2
    $(':checkbox.selectall').on('click', function(){
        // 3
        $(':checkbox[name=' + $(this).data('checkbox-name') + ']').prop("checked", $(this).prop("checked"));

    });

});

两者都可以完美地工作。第一个通过#table_pdf_view,如果选中复选框,则将其ID返回到隐藏输入#multi_client_id

第二个是全选复选框。选中时选择具有相同名称的所有复选框。全选复选框位于#table_pdf_view 之外。

问题是当我使用全选复选框时,返回到隐藏输入的值不正确。它只返回全选复选框的 id 而不是其他复选框的 id,我不知道为什么。

【问题讨论】:

    标签: jquery function checkbox


    【解决方案1】:

    发生这种情况的原因是因为 Select All 复选框也是您使用此选择器的 div 中的一个复选框:

      var $checkboxes = $("#table_pdf_view input[type=checkbox]");
    

    您需要将其移出该 div,或更改获取所有复选框的方式。

    例如,如果您查看以下页面,它会告诉您如何忽略某个复选框:

    jQuery - How to select all checkboxes EXCEPT a specific one?

    希望这会有所帮助。

    更新

    这是工作版本:

      //Handle Multi Download
      $(document).ready(function() {
      var $checkboxes = $('#table_pdf_view input:checkbox:not("#sa_download")');
      $checkboxes.on('change', function() {
            var ids = $checkboxes.filter(':checked').map(function() {
            return this.id;
        }).get().join(',');
        $('#multi_client_id').val(ids);
      });
      });
    
    
      $(document).ready(function(){ // 1
       // 2
           $(':checkbox.selectall').on('click', function(){
           // 3
               $(':checkbox[name=' + $(this).data('checkbox-name') + ']').prop("checked", $(this).prop("checked"));
               $(':checkbox[name=' + $(this).data('checkbox-name') + ']').trigger("change");
           });
    
       });
    

    【讨论】:

    • 嗨,我也这么认为,即使将复选框移到 div 之外,问题仍然存在
    • OK 试试链接中的 not 选择器看看是否有帮助!
    • 好的,谢谢。那行得通。但是,隐藏的输入中不显示其他 ID。它们具有唯一的 ID,我将其作为字符串发布以在其他地方使用。好像 jquery 复选框不会触发 on 更改
    • 你能在 jsfiddle 上创建一个例子让我看看吗?
    • 好的,已修复。 jsfiddle.net/ZAzwM/5 甚至为 selectall 函数添加了触发器更改。
    猜你喜欢
    • 2013-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-09
    • 2012-04-08
    • 2023-03-07
    • 1970-01-01
    相关资源
    最近更新 更多