2014-02-07 12 views
8

iCheck funktioniert nur mit Daten auf der ersten Seite. Wenn ich zu einer anderen Seite navigiere, werden Kontrollkästchen angezeigt, aber iCheck wird nicht angewendet. Dieser Code hilft, funktioniert aber nicht zu 100%.DataTables + iCheck + Paginierung

function turn_on_icheck(checkboxClass) 
{ 
    $('input[type=checkbox]').iCheck({ 
     checkboxClass: checkboxClass 
    }); 
} 
$('.data-table').on('page', function() { 
    turn_on_icheck(); 
}); 

Als ich zur zweiten Seite gehen zeigt es alles in Ordnung jetzt, aber wenn ich auf die Seite zurück, die zuvor besucht wurde, die Kontrollkästchen gibt es nicht. Es scheint mir, als ob es einen Fehler verursacht, weil dort bereits eine Instanz von iCheck läuft. Gibt es eine Möglichkeit zu überprüfen, ob einer läuft oder nicht?

Antwort

13

Ich hatte das gleiche Problem mit asp.net Grid. Bitte verwenden Sie die on draw.dt event, das

$('.data-table').on('draw.dt', function() { 
    turn_on_icheck(); 
}); 
+1

Dies funktioniert pe Richtig. Vielen Dank! – reformed

+1

Froh, dass es geholfen hat :) @ reformed – hsobhy

+0

Hatten Sie Probleme mit Callbacks, die nicht funktionieren, wie auf einer anderen Seite ('isChecked'), vorausgesetzt, Sie verwenden Paginierung? –

1

als auch in Ruf- und Anzeigemenü helfen bei der Datentabellen, die Werte zu aktualisieren, sind neue Eingaben machen und die Eingänge wieder die icheck funtion anwenden müssen.

$(document).ajaxComplete(function() { 
    $('input[type=checkbox]').iCheck({ 
     checkboxClass: checkboxClass 
    }); 
}); 
+0

Bitte fügen Sie einige Erklärungen dazu, wie dies löst das Problem – Huangism

+0

Wenn Datenfelder die Werte aktualisieren, werden neue Eingaben gerendert und die Eingaben müssen erneut die icheck-Funktion anwenden. – platix

+1

Sie können die Frage bearbeiten und die Erklärung hinzufügen – Huangism

0

das ist, wie ich es gelöst ... sollten Sie die icheck einige Zeit geben, bis sie beendet ist, bevor die Datatable-Funktion aufrufen ... die die JQUERY verwenden, wenn die Funktion

function Typer(callback) 
{  
    if ($("input.flat")[0]) 
    { 
     $('input.flat').iCheck({ 
      checkboxClass: 'icheckbox_flat-green', 
      radioClass: 'iradio_flat-green' 
     }); 
    } 
} 


function enableDataTableMain() 
    { 
    var table = $('#tableWithData').DataTable({ 
    "aoColumnDefs": [ 
     { 
      'bSortable': false, 
      'aTargets': [0] 
     } //disables sorting for column one 
    ], 
    "tableTools": { 
     "sSwfPath": "swf/copy_csv_xls_pdf.swf" 
    }});      
    var tt = new $.fn.dataTable.TableTools(table); 
    $(tt.fnContainer()).insertBefore('div.functionDiv'); 
} 


    $(document).ready(function() { 
    $.when(Typer()).done(function() { 
     enableDataTableMain(); 
    }); 
}); 
2

Hier ist ein einfacher Art und Weise, dies zu tun:

$('.inputClass').iCheck({ 
     handle: 'checkbox', 
     checkboxClass: 'icheckbox_flat-blue' 
    }); 

source Good Luck