通用的表单验证组件

一个通用的表单验证组件,可以根据验证类型自行扩展,可以被动验证和主动验证。需要用到方法ParamUtil.setParam(已贴出)
组件代码:

package pizazz.flex4.manager{
import flash.events.Event;
import flash.events.MouseEvent;
import mx.controls.Alert;
import mx.events.ValidationResultEvent;
import mx.validators.EmailValidator;
import mx.validators.NumberValidator;
import mx.validators.StringValidator;
import mx.validators.Validator;
import pizazz.flex4.utility.ParamUtil;
import spark.components.Button;

public class Validators{
private var _btn:Button;
private var _isClick:Boolean = false;
private var _allV:Array;
private var _strV:StringValidator;
private var _numV:NumberValidator;
private var _emailV:EmailValidator;

public function Validators(btn:Button = null){
if(btn){
_btn = btn;
_isClick = true;
}
_allV = new Array();
}

public function setOtherValidator(param:Validator):void{
_allV.push(param);
}

private function common(param:Validator, item:Object):void{
param.source = item["source"];
param.property = item["property"];
if (_isClick){
param.trigger = _btn;
param.triggerEvent = MouseEvent.CLICK;
}
_allV.push(param);
}

public function valString2Text(event:Event, isNull:Boolean = false,
nullMsg:String = null, minNum:Object = NaN, maxNum:Object = NaN,
minMsg:String = null, maxMsg:String = null):void{
_strV = new StringValidator();
ParamUtil.setParam(_strV, {
"required": !isNull,
"requiredFieldError": nullMsg,
"minLength": minNum,
"maxLength": maxNum,
"tooShortError": minMsg,
"tooLongError": maxMsg
});
common(_strV, {"source": event.target, "property": "text"});
}

public function valNumber2Text(event:Event, isNull:Boolean = false,
nullMsg:String = null, minNum:Object = NaN,
maxNum:Object = NaN):void{
_numV = new NumberValidator();
ParamUtil.setParam(_numV, {
"required": !isNull,
"minValue": minNum,
"maxValue": maxNum,
"requiredFieldError": nullMsg
});
common(_numV, {"source": event.target, "property": "text"});
}

public function valEmail2Text(event:Event, isNull:Boolean = false,
nullMsg:String = null):void{
_emailV = new EmailValidator()
ParamUtil.setParam(_emailV, {
"required": !isNull,
"requiredFieldError": nullMsg
});
common(_emailV, {"source": event.target, "property": "text"});
}

public function submitValidator(msg:String = ""):Boolean{
var _arr:Array = Validator.validateAll(_allV);
if (_arr.length != 0){
if(msg == ""){
msg = "请确认输入的正确性和完整性";
}
Alert.show(msg);
return false;
}
return true;
}
}
}

组件执行:

<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:component="pizazz.flex4.component.*"
minWidth="955" minHeight="600">
<s:layout>
<s:VerticalLayout />
</s:layout>
<fx:Script>
<![CDATA[
import mx.controls.Alert;
import pizazz.flex4.manager.Validators;

private const val:Validators = new Validators();

private function submit():void{
if(val.submitValidator()){
Alert.show("提交成功");
}
}
]]>
</fx:Script>
<mx:Form width="320" height="240">
<s:HGroup width="100%">
<mx:FormHeading label="表单" width="100%" />
<s:Button label="提交" click="submit()" />
</s:HGroup>
<mx:FormItem width="100%" label="名称" required="true">
<s:TextInput width="100%"
creationComplete="val.valString2Text(event, false, null, 1, 5)" />
</mx:FormItem>
<mx:FormItem width="100%" label="年龄">
<s:TextInput width="100%"
creationComplete="val.valNumber2Text(event, true)" />
</mx:FormItem>
<mx:FormItem width="100%" label="E-mail" required="true">
<s:TextInput width="100%"
creationComplete="val.valEmail2Text(event)" />
</mx:FormItem>
</mx:Form>
</s:Application>

视图:
[img]http://dl.iteye.com/upload/attachment/345044/33dd4d33-9689-31c4-955a-553d94ab3793.png[/img]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值