$(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"/>
Qui .change()
aggiorna il valore della casella di testo con lo stato della casella di controllo. Uso .click()
per confermare l'azione deselezionando. Se l'utente seleziona Annulla, il segno di spunta viene ripristinato ma si .change()
attiva prima della conferma.
Questo lascia le cose in uno stato incoerente e la casella di testo dice false quando la casella è selezionata.
Come posso gestire la cancellazione e mantenere il valore della casella di testo coerente con lo stato di controllo?