$(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 wird .change()
der Textfeldwert mit dem Kontrollkästchenstatus aktualisiert. Ich .click()
bestätige die Aktion beim Deaktivieren. Wenn der Benutzer Abbrechen wählt, wird das Häkchen wiederhergestellt, aber .change()
vor der Bestätigung ausgelöst .
Dadurch bleiben die Dinge in einem inkonsistenten Zustand und das Textfeld sagt false, wenn das Kontrollkästchen aktiviert ist.
Wie kann ich mit der Stornierung umgehen und den Textfeldwert mit dem Prüfstatus in Einklang bringen?