JQuery Checkbox Change and Click Coordination
Dans les scénarios où l'état d'une case à cocher est mis à jour dynamiquement via des événements, il est crucial d'assurer la cohérence entre les l'état coché de la case à cocher et la valeur de la zone de texte liée. Cela devient particulièrement important lorsque l'on clique sur la case pour changer d'état.
Considérez le code jQuery suivant :
$(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?"); } }); });
Ici, l'événement .change() met à jour la valeur de la zone de texte en fonction de la valeur de la zone de texte. l'état coché de la case à cocher et l'événement .click() demande une confirmation pour décocher la case. Cependant, cette approche introduit une incohérence. Lorsque l'utilisateur annule (sélectionne Non) lors de l'invite de confirmation, la case reste décochée. Cependant, puisque l'événement change() se déclenche avant la confirmation, la valeur de la zone de texte est mise à jour sur false, indiquant un état décoché alors que la case est toujours cochée.
Pour résoudre ce problème, nous devons modifier le script pour gérer correctement l'annulation. Une approche est la suivante :
$(document).ready(function() { //set initial state. $('#textbox1').val(this.checked); $('#checkbox1').change(function() { if(this.checked) { var returnVal = confirm("Are you sure?"); $(this).prop("checked", returnVal); } $('#textbox1').val(this.checked); }); });
Cette version mise à jour introduit une vérification conditionnelle pour vérifier si la case doit être cochée. Si la confirmation est annulée, la méthode prop() est utilisée pour restaurer l'état coché de la case. La valeur de la zone de texte est ensuite mise à jour en fonction de l'état réel de la case à cocher, garantissant ainsi la cohérence entre l'état coché de la case à cocher et la valeur de la zone de texte liée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!