jQuery-Checkbox-Änderung und Klickereignis: Konsistenz mit TextBox-Wert aufrechterhalten
In Szenarien mit Kontrollkästchen und entsprechenden Textfeldern ist es entscheidend, die Konsistenz sicherzustellen ihre Werte. Wenn Sie jedoch sowohl die Ereignisse .change() als auch .click() für das Kontrollkästchen verwenden, kann es zu einem Problem kommen, bei dem der Wert des Textfelds beim Abbruch nicht mehr mit dem Status des Kontrollkästchens übereinstimmt.
Das Problem entsteht, weil .change () aktualisiert den Textfeldwert basierend auf dem Kontrollkästchenstatus, während .click() die Bestätigung beim Deaktivieren des Kontrollkästchens übernimmt. Wenn der Benutzer die Deaktivierungsaktion abbricht, wird .change() vor der Bestätigung ausgelöst, wodurch der Textfeldwert veraltet bleibt.
Behebung der Inkonsistenz
Um dieses Problem zu beheben, muss die Folgende Lösungen können implementiert werden:
Aktualisierte Antwort:
Verwendung von this.checked anstelle von $(this).is(':checked') und Verschieben der Bestätigungslogik innerhalb des .change()-Ereignisses stellt sicher, dass der Textfeldwert nur dann korrekt aktualisiert wird, wenn die Bestätigung erfolgreich ist.
<code class="javascript">$(document).ready(function() { //set initial state. $('#textbox1').val(this.checked); $('#checkbox1').change(function() { if(this.checked) { var returnVal = confirm("Are you sure?"); $(this).prop("checked", returnVal); } $('#textbox1').val(this.checked); }); });</code>
Ursprüngliche Antwort:
Alternativ kann die Verwendung von $( this).attr("checked", returnVal) und $(this).is(':checked') innerhalb des .change()-Ereignisses erzielen das gleiche Ergebnis und stellen sicher, dass der Textfeldwert nur aktualisiert wird, wenn die Bestätigung erfolgreich ist.
<code class="javascript">$(document).ready(function() { //set initial state. $('#textbox1').val($(this).is(':checked')); $('#checkbox1').change(function() { if($(this).is(":checked")) { var returnVal = confirm("Are you sure?"); $(this).attr("checked", returnVal); } $('#textbox1').val($(this).is(':checked')); }); });</code>
Diese Lösungen verhindern effektiv, dass der Wert des Textfelds beim Abbrechen mit dem Status des Kontrollkästchens inkonsistent wird, und stellen so eine genaue Darstellung der Auswahl des Benutzers sicher.
Das obige ist der detaillierte Inhalt vonSo behalten Sie konsistente Kontrollkästchen- und TextBox-Werte in jQuery bei: Beheben von Stornierungsproblemen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!