重写flex的validator类来限制文本输入

AS3虽然自带很多种类的validator,但是对于我们来说功能还是太少了.所以这时候不可避免就是要重写这个类,写出适合自己的validator类。

首先,假设有一个textinput,id名为userInput;一个button,id名为submit_Btn。例如以下代码:

< mx:TextInput  id ="selUser"  width ="100%" />
< mx:Button  id ="bt_submit"   />

新建一个floder,用于存放即将新建的class,新建一个personValidator的AS3 class文件

 

public   class  personValidator  extends  Validator
 
{
  
private var results:Array;
  
//构造方法继承父类
  public function personValidator()
  
{
   
super();  
  }

  
//重写doValidation方法,在其内可以写入自己想要的规则,很明显这里是根据select再判断具体person的情况
  override protected function doValidation(value:Object):Array
  
{
   var person:String 
= String(value.person);
   var select : Boolean 
= Boolean(value.select);
   
   
//clear the array
   results = ;
   
//首先做一下父类的方法
   results = super.doValidation(value);
   
if(results.length>0)
   
{
    
return results;
   }

   
//这里开始就是你自己的方法了
   if(select)
   
{
    
if(person == "" || person == null)
    
{
     results.push(
new ValidationResult(true"person""noPersonName"
                         
"輸入框内不能為空."));
                 
return results;
    }

   }

   
return results;
  }

 }


 

保存后,到前台页面文件中,添加此类,如:

 

< mx:Model  id ="selectUserXml" >
  
< types >
   
< type >
    
< person > {selUser.text} </ person >
    
< select > {toParameter.selected} </ select >
   
</ type >
  
</ types >
 
</ mx:Model >


 
< model:personValidator  id ="perVal"  source ="{selectUserXml}"  property ="type"
  trigger
="{bt_submit}"  triggerEvent ="click"  listener ="{selUser}"
  valid
="setNextOwnerResult()" />

 

source:绑定的数据源,property:数据源中的节点名称,trigger:触发此validator的组件,triggerEvent:组件的事件,listener:此validator所监视的组件,valid:验证通过后执行的方法。

上面建立的model为一个保存数据的XML最后传入validator的value,当然你可以采取其他方式来保存。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值