dennis的专栏

关注flex,as3等ria技术

重写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,当然你可以采取其他方式来保存。 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

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

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭