现在的位置: 首页 > 综合 > 正文

Validator(二)自定义

2013年01月28日 ⁄ 综合 ⁄ 共 3210字 ⁄ 字号 评论关闭

DataVerify.mxml

<?xml version="1.0"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" xmlns:myV="myValidators.*" xmlns:local="*" creationComplete="initValidatorArray();" width="402" height="152"> 
    
<mx:Script>
    
<![CDATA[
        import mx.events.ValidationResultEvent;
        import mx.core.UIComponent;
        import mx.controls.Alert;
        import mx.validators.*;
        private var myValidators:Array;
        
        private function initValidatorArray():void {
            myValidators=[zipV, pnV,nameV];
        }
        //按钮事件,检测通过执行操作
        private function btnValidate_Click(event:Event):void{
            var validatorResults:Array = mx.validators.Validator.validateAll(myValidators);
            //长度为0表示所有验证通过
            if(validatorResults.length == 0){
                mx.controls.Alert.show("Validate OK!");
            }else{
                //将光标定位到第一个错误
                var v:ValidationResultEvent = validatorResults[0] as ValidationResultEvent;
                (v.target.source as UIComponent).setFocus();
            }
        }
    
]]>
    
</mx:Script>
    
    
<!--如果你要在验证错误提示中显示中文,使用这个改变字体大小!-->
    
<mx:Style>
       .errorTip {fontFamily:"simsun"; fontSize:"12"}        
    
</mx:Style>
    
    
<mx:ZipCodeValidator id="zipV" source="{zipCodeInput}" property="text" requiredFieldError="邮编必须填写"/>
    
<mx:PhoneNumberValidator id="pnV" source ="{phoneNumberInput}" property="text" />
    
<myV:NameValidator id="nameV" source="{txtName}" property="text" requiredFieldError="不能为空"/>
    
<mx:Form x="24" y="24">
        
<mx:FormItem label="zip Code:" required="true">
            
<mx:TextInput id="zipCodeInput"/>
        
</mx:FormItem>
        
<mx:FormItem label="phone Number:" required="true">
            
<mx:TextInput id="phoneNumberInput"/>
        
</mx:FormItem>
        
<mx:FormItem label="name:" required="true">
         
<mx:TextInput id="txtName"/>
        
</mx:FormItem>
    
</mx:Form>
    
<mx:Button label="Validate" click="btnValidate_Click(event)"/> 
</mx:Application>


NameValidator.as

package myValidators
{
 import mx.controls.Text;
 import mx.validators.Validator;
    import mx.validators.ValidationResult;

 public class NameValidator extends Validator
 {
  // Define Array for the return value of doValidation().
        private var results:Array;

        public function NameValidator ()
         {
            super();
        }

        override protected function doValidation(value:Object):Array
         {
            var name:String=value as String;
            // Clear results Array.
            results = [];

            // Call base class doValidation().
            results = super.doValidation(value);        
            // Return if there are errors.
            if (results.length > 0)
                return results;

            // Check name field. 
          
            if(name!="huangxi")
            {
              results.push(new ValidationResult(true, 
                    "name", "wrongName", "Please Enter the Name 'huangxi'."));
                return results;
            }
            return results;
        }
     }
}

 

//////////////////////////////////
总结
1.新建自定义的NameValidator继承Validator,并重写doValidation(),将自定义的方法加入到此函数中去
2.不允许空的错误提示可用requiredFieldError属性
3.<mx:FormItem>中有required属性,设置为true则出现"*"

抱歉!评论已关闭.