2014-05-13 8 views
9

Ich weiß, das mag primitiv erscheinen, aber ich habe versucht, es für einen ganzen Tag zu implementieren, vielleicht weil ich nicht vollständig verstehen kann, wie ich die API benutze, die ich benutze DataTables 1.10.0, Ich habe eine Tabelle mit Seitenumbruch-Funktion, jede Zeile hat ein Kontrollkästchen, ich brauche einen "alle Kontrollkästchen", die alle Kontrollkästchen auf allen Seiten überprüfen würde, das Problem ist, dass es nur die Kontrollkästchen aktiviert in der aktuellen Seite, und lässt die anderen Seiten deaktiviert, soll dies einfach sein, aber ich konnte es nicht herausfinden! die Antworten fand ich use „fnGetNodes“, die als veraltet zu sein scheint und nicht die von Version 1.10Datatables 1.10 "Alles überprüfen" via jquery

Bearbeiten verwendet: das ist mein Markup

 <table class="table table-striped table-bordered table-hover" id="numbers_table"> 
       <thead> 
        <tr> 
         <th><input type="checkbox" id="checkall" title="Select all" onClick="toggle(this)"/></th> 
         <th>Number</th> 
         <th>Company</th> 
         <th>Tags</th> 
        </tr> 
       </thead> 
       <tbody> 
        <% _.each(array, function (value) { %> 
        <tr> 
         <td><input type='checkbox' name='numbers[]' value='<%=value.id%>'/></td> 
         <td><%= value.number %></td> 
         <td><%= value.company %></td> 
         <td><%= value.tags %></td> 
        </tr> 
        <% }) %> 
       </tbody> 
      </table> 

    <button type="button" class="btn btn-primary" id="checkall2">SELECT ALL</button> 

<script> 

$(document).ready(function() { 

    $('#numbers_table').dataTable({ 
     //"bPaginate": false, 
     "aoColumnDefs": [ 
     { "bSortable": false, "aTargets": [ 0 ] } 
    ] 
     }); 

    $("#checkall2").click(function() { // a button with checkall2 as its id 
     $(':checkbox').prop('checked', true); // all checkboxes, you can narrow with a better selector 
    }); 
}); 
</script> 
+1

Bitte mehr Details liefern, wie Sie aktuelle Code verwendet. –

+0

@LaughDonor Ich habe den Code^ – mbahaa

Antwort

3

Versuchen Sie diesen Code:

var table = $('#numbers_table').DataTable(); 

var cells = table 
    .cells(":checkbox") 
    .nodes(); 

$(cells).prop('checked', true); 

Source.

+2

das wird nicht funktionieren, aber unter Antwort definitiv – Gayan

+0

Einverstanden, nicht sicher, warum diese Antwort ausgewählt wurde. Vielleicht war es in einigen früheren Versionen korrekt, ich habe keine Zeit zu überprüfen. So wie es heute steht, ist es nicht die Lösung. –

1

Es ist wirklich nicht so schwer ist, aber ohne Markup ich zu sehen kann nur ein allgemeines Beispiel liefern -

$('input[value="Check All"]').click(function() { // a button with Check All as its value 
    $(':checkbox').prop('checked', true); // all checkboxes, you can narrow with a better selector 
}); 
+1

Ich habe bereits ähnlichen Code implementiert, das Problem wird durch die Paginierung von Databases verursacht, der Selektor gilt für Elemente in der aktuellen Seite in Tabellen angezeigt, Kontrollkästchen in anderen Seiten bleiben unmarkiert – mbahaa

+0

Sie müssen hinzufügen Logik für Ihre Paginierungslogik, da die Daten erst dann geladen werden, wenn Sie auf einen Paginierungslink klicken. –

+0

die "Paginierungslogik" ist nicht meins, Datatables ist ein Plugin und sie haben eine ausgereifte API, ich habe bereits Antworten auf dieses Problem gefunden, aber anscheinend verwendete es ältere Versionen von API-Funktionen, wie "fnGetNodes", kann ich nicht scheinen die Funktionen zu finden, die in diesen Antworten in der aktuellen API verwendet werden – mbahaa

10

Dies sollte für Sie arbeiten

var table = $('#numbers_table').DataTable(); 

    $('#checkall').click(function() { 
     $(':checkbox', table.rows().nodes()).prop('checked', this.checked); 
    }); 
+0

wie css auf Zeile anwenden, die ich ausgewählt habe? –

+0

Wie kann möglich sein, dass 'table.rows()' wirft diese Ausnahme: 'Uncaught Typeerror: table.rows ist keine Funktion bei : 2: 7 bei Object.InjectedScript._evaluateOn (: 895: 140) bei Object.InjectedScript._evaluateAndWrap (: 828: 34) bei Object.InjectedScript.evaluate (: 694: 21) ' – nicolimo86

2

wenn versucht nicht funktionieren api() Schlüsselwort:

$('#YourCheckBoxId').on('click', function() { 
    var rows = YourDatatableVariable.api().rows({ 'search': 'applied' }).nodes(); 
    $('input[type="checkbox"]', rows).prop('checked', this.checked); 
});