2016-05-12 17 views
1

Ich möchte eine Validierung durchführen, wenn das Kontrollkästchen aktiviert ist und deaktivieren Sie es, wenn die Validierung fehlschlägt.iCheck rückgängig machen überprüfen

Derzeit ist die Checked-Eigenschaft falsch, aber das Kontrollkästchen bleibt aktiviert.

MyCode:

$("#Lve_InclWE").on('ifChecked', function(event){ 
    some_function(); 
    if(!some_validation()) 
     $('#Lve_InclWE').iCheck('uncheck'); 
}); 

HTML:

<div class="icheckbox_flat-green checked" style="position: relative;"> 
<input type="checkbox" class="icheck" id="Lve_InclWE" name="Lve_InclWE" style="position: absolute; opacity: 0;"> 

update1: Auch wenn ich das tue, bleibt das Problem bestehen:

$("#Lve_InclWE").removeProp("checked"); 
//$("#Lve_InclWE").prop("checked",false); 
$("#Lve_InclWE").iCheck('update'); 

update2: Versuchte Entfernen geprüft Klasse bei Eltern div aber gleich. Liegt es daran, dass ich innerhalb des Check-Ereignisses ausgeführt habe?

$('#Lve_InclWE').closest("div").removeClass("checked"); 

Update3: Ich habe eine Warnung am Ende des „ifChecked“ Ereignisses und bemerkte, dass das Kontrollkästchen tatsächlich nicht markiert, aber es gibt Zustand geprüft nach Ende der Veranstaltung. Was bedeutet, dass ich die Undo-Prüfung (Abwahl) innerhalb des ausgelösten Ereignisses nicht durchführen kann, jede denkbare Methode?

+0

Können Sie eine 'jsfiddle' DEMO hinzufügen? –

+0

@GuruprasadRao nie jsFiddle zuvor verwendet. Nur versucht, aber fehlgeschlagen. –

Antwort

1

Die Lösung und möglich die einzige Lösung ist das Kontrollkästchen deaktivieren AFTER Ereignis beendet, setTimeOut mit (fn, 0)

$("#Lve_InclWE").on('ifChecked', function(event){ 
    if(!validation()){ 
     setTimeout(function(){ 
      $('#Lve_InclWE').iCheck('uncheck'); 
     },0); 
    } 
}); 

Der Grund ist, weil das Kontrollkästchen gesetzt immer Zustand nach dem ausgelösten geprüft Veranstaltung.

Wenn Sie eine andere Lösung haben, zögern Sie nicht zu kommentieren.