2017-02-09 3 views
0

選択可能なチェックボックスの制限は、最初のページの最初のページにのみ適用されます。選択可能なチェックボックスの制限、ページ番号の次のページまたは他のページ番号をクリックして別のチェックボックスをクリックすると、制限されません。他のページにも適用されます。ここでチェックボックス(Icheck)の制限は、データテーブルの他のページには適用されません。最初のページでのみ動作します。

は私のコードです:

$(document).ready(function() { 
    var $datatable = $('#datatable-checkbox'); 

    $datatable.dataTable({ 
     'order': [[1, 'asc']] 
    }); 

    var limit = 2; 

    $datatable.on('draw.dt', function() { 
     $('input').iCheck({ 
      checkboxClass: 'icheckbox_flat-green' 
     }); 
    }); 

    $(".flat").on("ifChecked",function(e) { 
     var checkboxes = $("input:checkbox"); 
     var $this = $(this); 

     if (checkboxes.filter(":checked").length > limit) { 
      swal({ 
       title: "Book Limit Reached", 
       text: "", 
       type: "warning", 
      }); 

      setTimeout(function() { 
       $this.iCheck('uncheck'); 
      }, 1); 
     } 
    }); 
}); 

答えて

0

あなたは以下の例を参照してくださいon()コールで2番目の引数としてのセレクタを提供することで、イベントの委任を使用する必要があります:jQueryのon()メソッドのドキュメントから

$datatable.on('ifChecked', '.flat', function() { 
    // your code here 
}); 

を:

委任されたイベントには、ev 後で文書に追加される子孫要素。

詳細については、jQuery on()メソッドドキュメントの「直接イベントと委任イベント」を参照してください。詳細については、jQuery DataTables – Why click event handler does not workを参照してください。

また、現在以外のページのチェックボックスはDOMに存在しないため、​​jQuery DataTable APIメソッドを使用してすべてのチェックボックスのリストを取得する必要があります。他の人のための参考のために

var checkboxes = $datatable.DataTable().$("input:checkbox"); 
+0

お返事ありがとうございますが、あなたの提案に基づいて自分のコードを構築することはできないと思います。私はそれを試していましたが、私はそれを正しくやっていないと思います。(..私は申し訳ありませんが、もっと詳しく説明することができますか?その場合、上記のコードに基づいて正しいコードを作成できますか?あなたに感謝します。 – Neil0412

+0

最終的にはそれを受けました。ありがとうございました!完全に理解するのではなく、まず欲求不満が私に入ってきました。誰かがこの投稿から助けられることを願っています。 – Neil0412

+0

選択したチェックボックスの値を異なる別のページから渡すと、フォームの送信中にすべてのチェックボックスが送信されませんでしたか?これに可能な解決策は何でしょうか? – Neil0412

0

、これは私が@ Gyrocode.comさんの提案に基づいて、それをどうやったのか..です

ところで、私は

$(document).ready(function() { 
var $datatable = $('#datatable-checkbox'); 

$datatable.dataTable({ 
    'order': [[1, 'asc']] 
}); 

var limit = 2; 

$datatable.on('draw.dt', function() { 
    $('input').iCheck({ 
     checkboxClass: 'icheckbox_flat-green' 
    }); 
}); 

$datatable.on('ifChecked', '.flat', function() { 
    var checkboxes = $datatable.DataTable().$("input:checkbox"); 
    var $this = $(this); 

    if (checkboxes.filter(":checked").length > limit) { 
     swal({ 
      title: "", 
      text: "", 
      type: "warning", 
     }); 

     setTimeout(function() { 
      $this.iCheck('uncheck'); 
     }, 1); 
    } 
});}); 
警告ポップアップ/のチェックボックスとsweetalertためicheckを使用
関連する問題