flex 自定义Validator

转载自 http://amberoracle.blog.163.com/blog/static/10598633820097262242474/

第一步:写AS类继承mx.validators.Validator ,并导入mx.validators.ValidationResult.
 value中存放需要验证的内容
results数组中存放验证后的结果,如果通过验证,数据为空;如果验证失败,数组中是ValidationResult.对象,内含失败信息。

package utils
{
    imp
ort mx.validators.Validator;       //Validator 类是所有 Flex 验证程序的基类。

    imp ort mx.validators.ValidationResult;

    public class AddressValidator extends Validator
    {
        private var results:Array;
        public function AddressValidator()
        {
            super();
        }
        protected override function doValidation(value:Object):Array{    
  //受保护的方法    protect  ;  doValidation(value:Object):Array  ; 执行此验证程序的验证逻辑,包括验证缺少值或空值是否会导致如 required 属性的值所定义的验证错误。
            results=[];
            results=super.doValidation(value);
            if(value!=null)
            {
                var pattern:RegExp=new RegExp("\\d+\\x20[A-Za-z]+");
                if(value.search(pattern)==-1){
                    results.push(new ValidationResult(true,null,"notAddress","This is not a valid address"));
                          // 携带的错误信息
                }
            }
            return results;//返回字符串如果为空 就通过验证  如果有内容  那就是验证失败的结果信息
        }
    }
}

第二步:导入FLEX程序
xmlns:u="utils.*"
建立验证器
<u:AddressValidator id="addressV" source="{billingAddress}" property="text" required="true"/>
id  验证器名
source 验证源
property 验证源所在位置的属性名
required 不可为空

第三步:在FLEX程序中导入imp ort mx.events.ValidationResultEvent;
来对验证的结果进行判断
private var vAddressResult:ValidationResultEvent=null;

 需要检验处:
private function process():void{
            vAddressResult=addressV.validate();   //验 证器执行validate()方法进行验证
              //validate    ()    方法     
               //public function validate(value:Object = null, suppressEvents:Boolean = false):ValidationResultEvent
               //执行验证并(可选)将结果通知给侦听器。

          
            if(vAddressResult.type==ValidationResultEvent.VALID){ //判断是否通过验证
            var  e:ObjectDataEvent = new ObjectDataEvent("billingInfoReturn",checkoutInfo);
            this.dispatchEvent(e); 
             }
        }
posted on 2010-05-11 15:34  念时  阅读(607)  评论(0编辑  收藏  举报

细节决定成败!态度决定一切!