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

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>

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值