2009-07-03 9 views
0

Je souhaite effectuer une validation simple sur plusieurs champs. S'il vous plaît noter que ces champs ne sont pas dans un mx: Formulaire, car la façon dont ils sont affichés n'est pas la norme. La validation fonctionne correctement, cependant, elle ne met pas en surbrillance le textInput avec le message d'erreur.Flex 3 StringValidator Highlight Champ

myValidator.source = empName1; 
myValidator.property = "text"; 
if(myValidator.validate().type == ValidationResultEvent.VALID) 
{ 
Alert.show("good"); 
} 
... 
<mx:StringValidator id="myValidator" required="true" minLength="1" requiredFieldError="This field is required" /> 
<mx:TextInput x="152" y="32" width="207" id="empName1"/> 

S'il vous plaît noter que je veux utiliser le même validateur « MyValidator » contre plusieurs champs qui est la raison pour laquelle la source et la propriété sont définies dans le code actionscript 3.

Merci

Mise à jour: Heres une fonction similaire, j'ai créé qui fonctionne:

private function validateField(fields:Array):Boolean 
{ 
    var rtnResult:Boolean = true; 
    for each(var i:Object in fields) 
    { 
     myValidator.source = i; 
     myValidator.property = "text"; 

     i.validateNow(); 
     if(myValidator.validate().type == ValidationResultEvent.INVALID) 
      rtnResult = false; 
    } 
    return rtnResult; 
} 

qui est appelé comme ceci:

if(!validateField([TicketTitle,TicketDesc])) 
{ 
Alert.show("Required fields were left blank!", "Warning"); 
return; 
} 

et MXML validateur

<mx:StringValidator id="myValidator" required="true" minLength="1" requiredFieldError="This field is required" /> 

Répondre

0

Résolu ... J'avais besoin de ceci:

empName1.validateNow();