$(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"/>
Aquí .change()
actualiza el valor del cuadro de texto con el estado de la casilla de verificación. Yo uso .click()
para confirmar la acción al desmarcar. Si el usuario selecciona cancelar, la marca de verificación se restaura pero se .change()
activa antes de la confirmación.
Esto deja las cosas en un estado inconsistente y el cuadro de texto dice falso cuando la casilla de verificación está marcada.
¿Cómo puedo hacer frente a la cancelación y mantener el valor del cuadro de texto coherente con el estado de verificación?