$(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"/>
Ici, .change()
la valeur de la zone de texte est mise à jour avec l'état de la case à cocher. J'utilise .click()
pour confirmer l'action sur décocher. Si l'utilisateur sélectionne Annuler, la coche est restaurée mais se .change()
déclenche avant confirmation.
Cela laisse les choses dans un état incohérent et la zone de texte indique false lorsque la case est cochée.
Comment puis-je gérer l'annulation et garder la valeur de la zone de texte cohérente avec l'état de vérification?