$(document).ready(function() {
//set initial state.
$('#textbox1').val($(this).is(':checked'));
$('#checkbox1').change(function() {
$('#textbox1').val($(this).is(':checked'));
});
$('#checkbox1').click(function() {
if (!$(this).is(':checked')) {
return confirm("Are you sure?");
}
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="checkbox1"/><br />
<input type="text" id="textbox1"/>
Hier .change()
aktualisiert den Wert des Textfeldes mit dem Status des Kontrollkästchens. Ich verwende .click()
um die Aktion bei der Aufhebung der Markierung zu bestätigen. Wenn der Benutzer Abbrechen wählt, wird das Häkchen wiederhergestellt, aber .change()
schießt vor der Bestätigung.
Dadurch entsteht ein inkonsistenter Zustand, und das Textfeld zeigt false an, wenn das Kontrollkästchen aktiviert ist.
Wie kann ich mit der Stornierung umgehen und den Textfeldwert mit dem Prüfstatus konsistent halten?