1

我在使用以下两个 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,我不知道为什么。

4

1 回答 1

0

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

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

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

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

jQuery - 如何选择除特定复选框之外的所有复选框?

希望这可以帮助。

更新

这是工作版本:

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

   });
于 2012-06-28T12:07:22.353 回答