2010-03-15 2 views
2

HI, J'essaie juste de définir une valeur de champ et de la désactiver en même temps. Est-ce que cela peut être fait en ext js? Les docs sont très faibles sur ce sujet.Ext JS - Puis-je "chaîner" des méthodes sur un champ?

quelque chose comme ceci génère des erreurs:

myForm.getForm().findField('start_date').setValue('').setDisabled(true); 

Je suis habitué à JQuery qui fait ce genre de choses bien mais n'ont pas eu de chance avec Ext.

Merci pour toute aide.

Répondre

0

Cela est dû au fait que la méthode setValue() ne renvoie pas d'objet champ. Vous ne pouvez pas utiliser setDisabled() de cette manière.

EDIT: (Pour les bas vote crétins) De la documentation ExtJS

:

method: setValue(value) 

Parameters: 
value : Mixed 
The value to set 

Returns: 
void 
+0

merci les gars, je vais trouver une autre façon. – 29er

2

En fait, Field.setValue ne en fait renvoyer une référence au champ (docs), de sorte que vous devriez être en mesure appeler setDisabled (hérité de Component) comme vous l'avez. Vous devez avoir un autre problème en cours. Peut-être que findField('start_date') retourne null. Vous devez vous assurer que toutes les valeurs de retour sont ce que vous attendez. Utilisez Firebug pour comprendre l'erreur, ou briser votre déclaration et voir quel appel échoue réellement. Tout est «chaînable» tant que la valeur de retour est l'objet lui-même (généralement désigné par this dans les docs). Dans jQuery, tout fonctionne sur les éléments DOM, donc c'est cohérent. Dans Ext, vous avez beaucoup de composants avec des comportements variés. Parfois, enchaîner est logique, parfois non - assurez-vous de vérifier les documents lorsque vous n'êtes pas sûr.

0

Je suis d'accord avec bmoeskau cela devrait fonctionner si le champ est présent et trouvé par le formulaire. Je voudrais vous conseiller de quelque chose comme ça pour éviter les erreurs:

var field = myForm.getForm().findField('xyz'); 
if(field !== undefined) 
{ 
    field.setValue(''); 
    field.setDisabled(true); 
} 
else 
{ 
    // Error Handling 
}