Validator可以实现信用卡号码格式检测(mx.validators.CreditCardValidator)、货币格式检测(mx.validators.CurrencyValidator)、E-mail格式检测(mx.validators.EmailValidator)等等功能,
下面的范例演示了StringValidator、NumberValidator和EmailValidator的用法。由于这三个类都继承自Validator,因此都拥有requiredFieldError属性,用于自定义没有值的时候的错误信息。但是这三个类拥有更多的错误信息。要检测的值越复杂,需要定义的错误信息就越多,例如EmailValidator,本例中共定义了9个错误信息。
如果不定义错误信息,Flex会显示默认的英文错误信息,这显然也不是我们所需要的。如果想偷懒的话,可以定义几个最可能出现的错误,例如本例的NumberValidator,就没有定义所有的错误信息。
顺便还要说一句的是,NumberValidator可以指定要检测的数字是整数还是实数,这需要用domain属性来指定。同时,它还可以指定千分位分隔符。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" fontSize="12" width="300" height="200">
<mx:Style> <![CDATA[ .errorTip { fontSize: 12; } ]]> </mx:Style>
- <fx:Script>
- <!--[CDATA[
- import mx.validators.Validator;
- import mx.controls.Alert;
- protected function click():void
- {
- var vArray:Array = Validator.validateAll([nameV,ageV,sexV,emailV]);
- if(vArray.length==0)
- {
- Alert.show("正确");
- }
- else
- {
- Alert.show("出现错误");
- }
- }
- ]]-->
- </fx:Script>
<mx:StringValidator id="nameV" source="{nameTI}" property="text"
<mx:NumberValidator id="ageV" source="{ageTI}" property="text" domain="int"
<mx:Validator id="sexV" source="{sexRBG}" property="selectedValue"
<mx:EmailValidator id="emailV" source="{emailTI}"
<mx:FormItem label="年龄:" width="200"> <mx:TextInput id="ageTI"/> </mx:FormItem>
<mx:FormItem label="性别:" direction="horizontal" width="200">
<mx:FormItem label="E-mail:" width="200"> <mx:TextInput id="emailTI"/> </mx:FormItem>
<mx:Button id="btn" label="提交" />
</mx:Application>