1

次の2つの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 に返します

2 つ目はすべて選択チェックボックスです。チェックすると、同じ名前のすべてのチェックボックスが選択されます。すべて選択チェックボックスは #table_pdf_view の外にあります。

問題は、すべて選択チェックボックスを使用すると、非表示の入力に返される値が正しくないことです。他のチェックボックスのIDではなく、すべて選択したチェックボックスのIDのみを返しますが、その理由はわかりません。

4

1 に答える 1

0

これが発生する理由は、[すべて選択] チェックボックスが、このセレクターを使用している 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 に答える