2010-07-19 4 views
3

J'utilise jQuery UI et j'essaie de désactiver toutes les zones de texte d'un groupe de données, mais uniquement une fois par chargement des onglets. Voici ce que j'ai jusqu'à présent:Exécuter une action uniquement dans jQuery

$(function() { 
     $("#tabs").tabs({ 
      cache: true, 
      load: function (event, ui) { 
       $(".data-group").one('load', function() { 
        $(this).find(':text').attr('disabled', 'disabled'); 
       }); 
      }, 
      select: function (event, ui) { 
       // Do Stuff 
      } 
     }); 
    }); 

Le résultat est que je peux activer les zones de texte (via l'interface), entrer des données, mais quand je passe loin de l'onglet et revenir, la valeur est dans la zone de texte (et les messages de validation sont affichés s'il y a une erreur dans les données), mais toutes les cases sont désactivées.

Suggestions pour corriger ce problème?

Répondre

0

Je fini par résoudre ce par la mise en cache les onglets pour qu'ils ne se chargent qu'une seule fois. Ensuite, j'active les zones de texte appropriées. À partir de ce moment, les actions de l'utilisateur déterminent si d'autres cases sont activées ou désactivées.

0

Essayez la liaison à l'événement show, quelque chose le long des lignes de «s'il existe des données dans au moins l'une des entrées de texte leur permettent ensuite », par exemple:

show: function(event, ui) { 
    if($(".data-group").find(":text[value]").length) { 
     $(".data-group").find(":text").removeAttr("disabled"); 
    } 
} 
+0

Cela fonctionne, mais il semble qu'il serait plus efficace d'avoir la désactivation seulement une fois par changement d'onglet. Est-ce possible? Sinon, je vais aller avec votre méthode. – JasCav

+0

En fait, je me suis rendu compte que cela ne fonctionnerait pas parce qu'un utilisateur pouvait entrer une valeur, puis désactiver la case à cocher. Encore une fois, il semble toujours qu'il devrait y avoir une réponse plus efficace. J'apprécie votre aide. – JasCav

Questions connexes