您的位置:首页 > 移动开发

自定义flex的数据验证组件!

2008-11-28 01:16 639 查看
package myCompenent
{
    import mx.validators.Validator;                
//引用Validator类
    import mx.validators.ValidationResult;         
//引用ValidationResult类
    public class myValidators extends Validator
    {
        public function myValidators()              //构造函数
        {
            super();
        }
        private var results:Array;                 
//定义一个数组,用以存储错误
        //重写验证函数
        override protected function
doValidation(value:Object):Array
        {
            var s:String = value as String;
            results = [];                           //清空数组
            results = super.doValidation(value);   
//先用继承类中的doValida tion方法验证
            if (results.length > 0)                
//如果验证时有错,返回错误信息
                return results;
            if(s.length>6)                     
//自定义验证,字符长度不超过6
            {
                //记录出错信息
                results.push(new
ValidationResult(true,"text","StringTooLong", "字符长度超过6了"));
            }
            return results;
        }
    }
}
(5)          
extends关键字表示继承。
(6)          
super关键字表示继承子类中的方法,所以“super.doValidation(value)”语句表示继承子类中的doValidator方法。
(7)           override关键字表示重写函数。
(8)          
ValidationResult类是验证结果类,包含于“mx.validators.*”中。ValidationResult类的构造函数有四个参数。第一个参数表示是否为错误类型,第二个参数表示指向某特定属性,第三个参数表示错误类型,第四个参数表示错误提示。
(9)          
本程序中自定义了“StringTooLong”错误类型,提示“字符长度超过6了”。此错误在数据组件的长度超过6位时发生。
(4)调用自定义验证类。
调用自定义组件时必须指明名称空间。Flex
3.0提供的组件都在“mx”名称空间下,所以在新建MXML后都自动生成xmlns:mx="http://www.adobe.com/2006/mxml"语句。
引用自定义组件的语法如下所示。
<最外层组件 … xmlns:空间名称="类所属的包">

<空间名称:自定义组件/>
空间名称可任意取名。类所属的包必须与类定义时的package关键字相同。
以下代码引用自定义组件myValidators。
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
    xmlns:MyComp="myCompenent.*">

<MyComp:myValidator … />
以下代码调用myValidator组件验证输入框中的数据。
<?xml version="1.0" ?>
<mx:Applicationxmlns:mx="http://www.adobe.com/2006/mxml"xmlns:MyComp="myCompenent.*"
fontSize="13">
    <!--自定义组件myValidators,用于验证字符串数据-->
    <MyComp:myValidators id="myVal"
        source="{txtString}" property="text"
    />
    <mx:Paneltitle="自定义验证组件" width="300" height="200"
horizontalAlign= "center" verticalAlign="middle">
        <mx:TextInput id="txtString"/>                     
<!--输入框组件-->
        <mx:Label text="{txtString.errorString}"/>         
<!--Label组件,用于显示验证结果-->
        <mx:Button label="验证" click="myVal.validate();"/> 
<!--按钮组件,用以触发验证-->
    </mx:Panel>
</mx:Application>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息