2010-10-28 6 views
1

Je suis nouveau à extjs. Je voudrais savoir, est-il possible de faire la validation de vtype dynamique comme ci-dessous le code ...Validation de type Vtype dynamique Fait (comme ci-dessous le code) dans les extensions

customRegEX = /^[a-z0-9]/i 

customMsg = 'Must be an alphanumeric word' 


function ConstructVtype(customRegEX,customMsg) 
{ 
    var custExp = customRegEX; 
    Ext.apply(Ext.form.VTypes, { 
     AlphaNum: function(v,field) { 
      return /^[a-z0-9]/i.test(v); // instead of this code 
      return custExp.test(v); 
     }, 
     AlphaNumText: customMsg, 
     AlphaNumMask: custExp 
    }); 
} 

Mais j'obtiens l'erreur (Object ne supporte pas cette méthode) dans la ligne return custExp.test(v); car il n'y a pas de méthode appelée test dans l'objet (custExp)

est-il possible de typer custExp à cet objet qui maintiennent la méthode d'essai,

Si le point ci-dessus est les moyens pls fournissent ce type d'objet et comment transtypées? OU Indiquez comment je peux réaliser cette fonctionnalité de manière différente.

salut « Alexander Gyoshev » merci pour ur Replay

si je fais comme par u recommandé son homme de travail, mais je dois changer la valeur de regexp dynamiquement par le changement textfield, comme le code ci-dessous comment peut faire cet homme

function ConstructVtype() 
{ 
    var customRegEX = this.customRegEX; ////^[a-z0-9]/i, 
    customMsg =this.customErrorMsg; 

    Ext.apply(Ext.form.VTypes, { 
     AlphaNum: function(v,field) { 
      return customRegEX.test(v); 
     }, 
     AlphaNumText: customMsg, 
     AlphaNumMask: customRegEX 
    }); 

} 


var txt = new Ext.form.TextField({ 
renderTo:Ext.getBody(), 
    validator :ConstructVtype, 
    fieldLabel: 'Telephone', 
    name: 'Telephone', 
    vtype:'AlphaNum', 
    id:'test1', 
    customRegEX:'/^[a-z0-9]/i', 
    customErrorMsg:'Must be an alphanumeric word', 
    width:240 

}); 

var txt2 = new Ext.form.TextField({ 
renderTo:Ext.getBody(), 
    validator :ConstructVtype, 
    fieldLabel: 'Telephone', 
    name: 'Telephone', 
    vtype:'AlphaNum', 
    id:'test2', 
    customRegEX:'/^[a-zA-Z]/i', 
    customErrorMsg:'Must be an alphabets', 
    width:240 

}); 

Merci à l'avance

Répondre

1

les paramètres de la fonction remplacent celles globales. Vous pouvez factoriser le code ci-dessus de la manière suivante:

var customRegEX = /^[a-z0-9]/i, 
    customMsg = 'Must be an alphanumeric word'; 


function ConstructVtype() 
{ 
    Ext.apply(Ext.form.VTypes, { 
     AlphaNum: function(v,field) { 
      return customRegEX.test(v); 
     }, 
     AlphaNumText: customMsg, 
     AlphaNumMask: customRegEX 
    }); 
} 
+1

salut alex thnks pour votre réponse ... j'ai besoin d'un moyen de sortir en utilisant cette méthode ..pls vérifier la question mise à jour un ... – vineth

1
var customRegEX = new RegExp('^[a-z0-9]',i); 

http://www.w3schools.com/jsref/jsref_obj_regexp.asp

[édité]

Bien sûr, j'oublié de mettre '' autour de la chaîne de regexp.

+0

hey Mchl, thnk pour votre réponse homme ..pouvez-vous voir ma question mise à jour .. Comment puis-je utiliser cette méthode commune pour toute la zone de texte dans la fenêtre ou le formulaire. – vineth