2016-08-11 4 views
0

Könnte mir jemand sagen, wie Sie Onchange das Ereignis deaktivieren und esdeaktiv Vorübergehend Ereignis OnChange

$(':checkbox').each(function (k, v) { 
    $(this).onchange = null;// 
    $(this).off() // works but I do not know how to reactivate onchange event 
}) 

Edit 1 reaktivieren: Lassen Sie mich erklären Sie mein Problem ... Ich bin mit Bootstrap-Toggle onmy Checkbox. Aber vielleicht ist das nur ein Detail.

SO mein Problem ist .. Ich habe eine "Reset" -Taste auf meinem Formular. Wenn ich darauf klicke, habe ich eine Funktion, die jede Checkbox meines Formulars durchläuft und versucht, jedes Kontrollkästchen "zurückzusetzen". Durch das Zurücksetzen meiner Checkbox bedeute ich, dass sie auf ihren Anfangswert gesetzt werden. . . aber ich trigse eine "onchange" -Funktion, die später in meinem Code vorhanden ist. Und ich möchte diese "onchange" Funktion nicht auslösen

+0

(this) .prop ('disabled', true) .delay (500) .prop ('disabled', false) –

+0

So Ereignis Sie wollen * deaktivieren * die 'onchange' und als wiedererkennbar? Warum beenden Sie die Funktion nicht und lösen Sie das Ereignis nicht. – epascarello

+0

Was meinst du mit * Vorübergehend * genau? Und du brauchst die '.each' hier nicht. – DavidDomain

Antwort

1

Ich würde eine von zwei Optionen empfehlen.

Erstens können Sie entbinden und den Handler rebind von der Funktion einen Namen zu geben:

function handleCheckboxClick(e) { 
    //... 
} 

$(':checkbox').off('change'); 
$(':checkbox').on('change', handleCheckboxClick); 

Die andere Option ist eine Variable zu erstellen, die Sie true oder false nach Bedarf eingestellt, um anzugeben, ob die zur Ausführung Handler:.

$(':checkbox').on('change', function(e) { 
    if (!window.shouldExecuteCheckboxChangeHandler) 
     return; 

    //... 
}); 
+0

Danke Mann! Nach stundenlangen Versuchen habe ich etwas in Ordnung gebracht. Ich wähle Ihre zweite Lösung. Ich setze eine Eigenschaft auf ein window-Objekt und verwende es als Flag (true oder false) – zm455

-1
$(this).prop('disabled',true).delay (500).prop('disabled',false) 
+0

500 ist eine halbe Sekunde –

+0

'.delay()' funktioniert nicht so. – cpburnz

+0

Ja, normalerweise zwischen Animationen ..? –

0

Sie können Element deaktivieren und aktivieren.

$(':checkbox').attr('disabled', 'disabled'); 
$(':checkbox').removeAttr('disabled'); 
0

können Sie on und off verwenden:

$(':checkbox').each(function (k, v) { 

    $(this).off("change", myFunction) 

    //do stuff 

    $(this).on("change", myFunction) 

} 
function myFunction(e) { 
    //your event handling code 
} 

Sie müssen auch myFunction verwenden, wenn Sie die Prozedur zunächst eingestellt.

Verwandte Themen