2010-12-03 5 views
0

Lorsque l'utilisateur clique sur Modifier dans jqGrid, le formulaire qui s'ouvre comporte quelques zones de liste et zones de texte. En fonction de la valeur d'une zone de liste, certaines zones de texte doivent être désactivées ou définies pour être lues uniquement lorsque le formulaire est chargé.jqGrid éditer à l'aide de champs formedit disable en fonction de la valeur d'un autre champ

J'ai obtenu le morceau qui fonctionne pour l'événement onChange sur la liste pour faire basculer les zones de texte sur désactivé/activé, mais j'ai du mal à le faire sur le formulaire de chargement. J'ai essayé d'utiliser aftershowform, qui a déjà un gestionnaire d'événements, j'ai donc créé un autre événement, par exemple aftershowform2, et j'ai attaché cet événement et l'eventhandler se déclenche. Mais le problème est que les boîtes de liste sont chargées dynamiquement en utilisant un appel Ajax (dataurl de editoptions) et des feux aftershowform avant que ces listes ne soient remplies avec les options. Y a-t-il un événement différent qui se déclenche après le chargement des listes? L'application entière est pilotée par un framework et il est difficile de coller le code.

Répondre

1

Je vois de nombreuses façons de répondre à vos besoins.

Le premier et le meilleur à mon avis, serait l'utilisation de dataEvents du editoptions avec le type:'change' (voir réponse this comme exemple). Le code correspondant peut être

editoptions: { dataUrl:..., 
       dataEvents: [ 
        { 
         type: 'change', 
         fn: function(e) { 
          var v=$(e.target).val(); 
          alert(v); // do something with selected item value 
         } 
        } 
       ] 
      } 

La liaison aux fonctions définies par dataEvents sera après le retour réussi du select contiennent du serveur.

Une autre façon serait de modifier votre implémentation actuelle afin de remplacer jQuery.bind par jQuery.live (voir un modèle de code here).

+0

J'ai essayé l'événement de modification, mais l'événement ne se déclenche pas lorsque le formulaire est chargé. Comme je l'ai déjà dit, l'événement change se déclenche lorsque vous modifiez l'option dans la zone de liste. – anamar

+0

@anamar: Si cela ne fonctionne pas dans votre code, vous devez ajouter votre question avec le code complet. Si je pouvais reproduire votre problème, je pourrais essayer de vous aider. – Oleg

Questions connexes