2012-01-16 2 views
2

У меня есть таблица с флажками в первом столбце. Я использую плагин jQuery DataTable для отображения моей таблицы.Как проверить каждый флажок в jquery datatable?

Я сделал 2 ссылки, чтобы выбрать/снять все флажки. Вот один, чтобы выбрать все:

<a href="" name="CheckAll" onClick="checkAll(document.email_list_form_inviter.getElementsByClassName(\'email_checkbox\'), event)" >Select all</a> 

И JavaScript:

function checkAll(field, event) { 
    event.preventDefault(); 
    for (i = 0; i < field.length; i++) 
     field[i].checked = true ; 

    return false; 
} 

Но DataTable позволяет пагинацию и моя функции выбрать только видимые флажки, а не те, из других страниц. Как сделать, чтобы выбрать каждый флажок в моей таблице данных?

Решение:

Хорошо я сделал это с fnGetNodes, спасибо amccausl!

$("a[name='CheckAll']").click(function(event) { 
     event.preventDefault(); 
     var nodes = datatable.fnGetNodes(); 
     $('.email_checkbox', nodes).attr("checked", "checked"); 
    }); 

ответ

1

Вы можете использовать fnGetNodes, чтобы захватить все узлы, необходимые вместо getElementsByClassName.

Вы также должны использовать jquery.click() событие, а не определяя OnClick себя

0

Простите, мой код является неправильным:

Динамический флажок

return '<input type="checkbox" id="email_checkbox" name="email_checkbox" />'; 

Ссылка

<a href="" name="CheckAll" id="CheckAll">seleccionar todos</a> 

название:

<table cellpadding="0" cellspacing="0" border="0" class="display" id="example" width="100%"> 

и код

$(document).ready(function() { 
$("a[name='CheckAll']").click(function(event) { 
       event.preventDefault(); 
       var nodes = $('#example').fnGetNodes(); 
       $('.email_checkbox', nodes).attr("checked", "checked"); 
}); 
0
$(document).ready(function() { 
$(".checkall").click(function(event) { 
       event.preventDefault(); 
       var oTable = $('#example').dataTable(); 
       var nNodes = oTable.fnGetNodes(); 
       $email_box=$('.email_checkbox',nNodes); 
       if($email_box.attr("checked")=="checked"){ 
        $email_box.removeAttr("checked"); 
        $(".checkall").text("Check all"); 
       } 
       else{ 
       $email_box.attr("checked", "checked"); 
       $(".checkall").text("Uncheck all"); 
      } 
}); 
0

Это мое решение (DataTables1.9.4):

var nodes = $('#listContainer').DataTable().column(0).nodes(); 
    $(':checked', nodes).each(function (index) { 
     console.log($(this).text()) 
    }) 
+1

Пожалуйста, добавьте некоторые пояснения к коду. –

+0

Первая строка кода - это получить все экземпляры узлов, которые являются первичными узлами, включая флажки; Таким образом, мы можем получить все флажки с помощью jQuery. – bill

Смежные вопросы