2010-09-23 4 views
3

Im la construction d'une application dans ExtJS et j'ai une forme avec une fonction d'envoi d'échec comme celui-ci:ExtJS - forme échec MessageBox

buttons:[{ 
text: 'Bestil', 
id:'button_bestil', 
width:85, 
handler: function(){ 
    create.getForm().submit({ 
    success: function(f,a){ 
    //do stuff! 
    }, 
    failure: function(f,a){ 
    Ext.Msg.alert('Fejl', 'Error'); 
    } 
    });      
} 
}] 

Maintenant, ce que je veux est de montrer la raison de l'erreur des champs où non rempli correctement.

F.x. J'ai un champ de texte avec les éléments suivants:

vtypeText:'Please type in valid email', 
vtype:'email' 

j'ai découvert que je pouvais utiliser a.resultType. Il retourne « client ». Maintenant, comment puis-je obtenir le message d'erreur réel.

Hope this sens

/Sune

Répondre

4

De ce que je comprends - vous voulez signaler à l'utilisateur une liste de tous les champs non valides et la raison de chacun?

Cela peut être fait avec le code:

YOUR_FORM.getForm().items.each(function(item) { 
    if(item.getActiveError()){ 
    alert('Field: '+item.name+ ' Error: ' + item.getActiveError()); 
    } 
}); 

Où YOUR_FORM est le nom du composant de panneau FormPanel encapsulant votre formulaire. Cela fait une boucle dans chaque champ du formulaire et s'il y a une erreur (il est invalide), il le signalera à l'utilisateur. Vous pouvez, pour les utilisateurs bon sens, souhaitez ajouter chaque ligne d'erreur à une variable, puis produire un seul message à la fin au lieu de rapporter chacun individuellement ..

i.e.:

var ERROR_STRING; 
YOUR_FORM.getForm().items.each(function(item) { 
    if(item.getActiveError()){ 
    ERROR_STRING=ERROR_STRING+"The field '"+item.name+ "' is invalid, reason: " + item.getActiveError() + "<br />"; 
    } 
}); 
if(ERROR_STRING.length>0){ 
    Ext.MessageBox.alert('Error',ERROR_STRING); 
} 
+0

Merci! C'était juste ce que je cherchais! – sunebrodersen

+0

Content de vous aider :) – SW4