2009-09-21 4 views
1

J'ai fait ma propre vtype de custon qui effectue une demande de paiement ajax pour vérifier si un nom d'utilisateur est disponible dans la base de données:une Ext.TextField définir par programme pour être valide

Ext.apply(Ext.form.VTypes, { 

    username: function(val, field) { 
     var conn = new Ext.data.Connection(); 
     conn.request({ 
      url: '/account/CheckUsernameAvailability', 
      params: { "username": val }, 
      success: function(data) { 
       console.log("field = ", field); 
       console.log(data.responseText); 
      }, 
      failure: function() { 
       Ext.Msg.alert('Status', 'Unable to add vote'); 
      } 
     }); 
    }, 

    usernameText: 'Username is already taken' 
}); 

Le problème est que la demande est évidemment asynchrone, donc je ne peux pas retourner vrai si le data.responseText est OK. Au sein de cette fonction, je dois pouvoir définir "field" pour être valide.

Mais je ne peux pas sembler trouver quelque chose dans l'API Ext qui montre comment faire cela? (Je suppose que je dois manquer quelque chose)

Répondre

4

return true de fonctions et d'appeler field.markInvalid() en cas d'échec

+1

Remarque: cette méthode ne provoque pas de valider ou les méthodes isValid du champ pour retourner false si la valeur ne passe validation. Le simple fait de marquer un champ comme invalide n'empêchera pas la soumission des formulaires soumis – Estevez

Questions connexes