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,当然你可以采取其他方式来保存。
AS3自定义验证器
本文介绍如何在AS3中创建自定义验证器类personValidator,以实现对特定输入的有效性检查。通过重写Validator基类的doValidation方法,根据实际需求定制验证规则。
2215

被折叠的 条评论
为什么被折叠?



