Ich möchte überprüfen, ob ein Kontrollkästchen gerade deaktiviert wurde, wenn ein Benutzer darauf klickt. Der Grund dafür ist, dass ich eine Validierung durchführen möchte, wenn ein Benutzer ein Kontrollkästchen deaktiviert. Weil mindestens ein Kontrollkästchen aktiviert sein muss. Wenn er also den letzten deaktiviert, überprüft er sich automatisch erneut.
Mit jQuery kann ich leicht herausfinden, ob es überprüft wurde oder nicht:
$('#check1').click(function() {
if($(this).is(':checked'))
alert('checked');
else
alert('unchecked');
});
Aber ich möchte eigentlich nur eine if-Anweisung haben, die prüft, ob ein Kontrollkästchen gerade deaktiviert wurde.
Also dachte ich, ich könnte das mit dem folgenden Code machen:
$('#check2').click(function() {
if($(this).not(':checked'))
alert('unchecked');
else
alert('checked');
});
Dies zeigt jedoch immer die Meldung "nicht markiert" an. Nicht wirklich das, was ich erwartet hatte ...
Demo: http://jsfiddle.net/tVM5H/
Also brauche ich irgendwann so etwas wie:
$('#check2').click(function() {
if($(this).not(':checked')) {
// Got unchecked, so something!!!
}
});
Aber das funktioniert natürlich nicht. Ich möchte lieber nicht das erste Beispiel verwenden, da ich dann eine unnötige 'else'-Anweisung hätte, wenn ich nur eine' if'-Anweisung benötige.
Ist das als erstes ein jQuery-Fehler? Für mich ist es unerwartetes Verhalten. Und zweitens, hat jemand eine Idee für eine gute Alternative?
jQuery auf geprüft prüfen? "Ja wirklich?"
Verwenden Sie keine Panzerfaust, um die Arbeit eines Rasierers zu erledigen.
quelle
$(this)[0].checked
.checked
wo sie sind.is('checked')
, funktioniert nicht von alleine.quelle
Code von hier übernommen: http://chandreshrana.blogspot.in/2015/10/how-to-check-if-checkbox-is-checked-or.html
quelle
Schauen Sie sich einige der Antworten auf diese Frage an - ich denke, es könnte auf Ihre zutreffen:
Ausführen der Klickfunktion nach dem Standardverhalten eines Elements
Ich denke, Sie stoßen auf eine Inkonsistenz in der Browser-Implementierung der
onclick
Funktion. Einige aktivieren das Kontrollkästchen, bevor das Ereignis ausgelöst wird, andere danach.quelle
Die Antwort wurde bereits veröffentlicht. Aber wir können die Abfrage auch auf diese Weise verwenden
Demo
quelle
Mach es so
quelle
this.checked
. Die erste Zeile wird dort nicht benötigttypeof
(es wird niemals a ausgelöstReferencError
). Sie sollten auchprop()
anstelle von verwendenattr()
, wodurch ein Boolescher Wert zurückgegeben wird, wodurch Ihr zweiter ebenfalls redundant wird.