Maison  >  Article  >  interface Web  >  Comment maintenir la cohérence des cases à cocher et des zones de texte lors du traitement de la confirmation de l'utilisateur ?

Comment maintenir la cohérence des cases à cocher et des zones de texte lors du traitement de la confirmation de l'utilisateur ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-30 04:29:28419parcourir

How to Maintain Checkbox and TextBox Consistency When Handling User Confirmation?

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn