mx.validators
public class Validator
继承Validator Inheritance EventDispatcher Inheritance Object
实现 IMXMLObject
子类 CreditCardValidator, CurrencyValidator, DateValidator, EmailValidator, NumberValidator, PhoneNumberValidator, RegExpValidator, SocialSecurityValidator, StringValidator, ZipCodeValidator

Validator 类是所有 Flex 验证程序的基类。此类实现使验证程序生成必填字段的功能,必填字段是指用户必须在该字段中输入值,否则验证会失败。

MXML 语法expanded隐藏 MXML 语法

The Validator class defines the following tag attributes, which all of its subclasses inherit:

  <mx:Validator 
    enabled="true|false" 
    listener="Value of the source property" 
    property="No default" 
    required="true|false" 
    requiredFieldError="This field is required." 
    source="No default" 
    trigger="Value of the source property" 
    triggerEvent="valueCommit" 
  />
  

查看示例

另请参见

mx.events.ValidationResultEvent
mx.validators.ValidationResult
mx.validators.RegExpValidationResult
Using error tips
Validating data by using custom validators
Example: Creating a simple validator


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  enabled : Boolean
将此值设置为 false 将停止验证程序执行验证操作。
Validator
  listener : Object
指定验证侦听器。
Validator
  property : String
一个字符串,用于指定包含要验证的值的 source 对象的属性名称。
Validator
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  required : Boolean = true
如果为 true,则指定缺少值或空值将导致验证错误。
Validator
  requiredFieldError : String
缺少值和 required 属性为 true 时的错误消息。
Validator
  source : Object
指定包含要验证的属性的对象。
Validator
  trigger : IEventDispatcher
指定生成触发验证程序的组件。
Validator
  triggerEvent : String
指定触发验证的事件。
Validator
受保护的属性
 属性定义方
  actualListeners : Array
[只读 (read-only)] 包含侦听器对象(如果有)的数组或源对象。
Validator
  actualTrigger : IEventDispatcher
[只读 (read-only)] 包含触发器对象(如果有)或源对象。
Validator
  resourceManager : IResourceManager
[只读 (read-only)] 引用管理所有应用程序本地化资源的对象。
Validator
  subFields : Array
一个字符串数组,其中包含传递到 validate() 方法的 value 对象中所含属性的名称。
Validator
公共方法
 方法定义方
  
构造函数。
Validator
 Inherited
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false):void
使用 EventDispatcher 对象注册事件侦听器对象,以使侦听器能够接收事件通知。
EventDispatcher
 Inherited
将事件调度到事件流中。
EventDispatcher
 Inherited
检查 EventDispatcher 对象是否为特定事件类型注册了任何侦听器。
EventDispatcher
 Inherited
指示对象是否已经定义了指定的属性。
Object
  
如果 Validator 是使用 MXML 标签创建的,则由 MXML 编译器自动调用。
Validator
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
removeEventListener(type:String, listener:Function, useCapture:Boolean = false):void
从 EventDispatcher 对象中删除侦听器。
EventDispatcher
 Inherited
设置循环操作动态属性的可用性。
Object
 Inherited
返回指定对象的字符串表示形式。
Object
  
validate(value:Object = null, suppressEvents:Boolean = false):ValidationResultEvent
执行验证并(可选)将结果通知给侦听器。
Validator
  
validateAll(validators:Array):Array
[静态] 调用验证程序数组中的所有验证程序。
Validator
 Inherited
返回指定对象的原始值。
Object
 Inherited
检查是否用此 EventDispatcher 对象或其任何始祖为指定事件类型注册了事件侦听器。
EventDispatcher
受保护的方法
 方法定义方
  
为从验证程序调度的有效和无效事件设置所有侦听器。
Validator
  
执行此验证程序的验证逻辑,包括验证缺少值或空值是否会导致如 required 属性的值所定义的验证错误。
Validator
  
返回要验证的对象。
Validator
  
从错误结果数组返回 ValidationResultEvent。
Validator
  
如果值不为 null,则返回 true。
Validator
  
断开从验证程序调度的有效和无效事件的所有侦听器的连接。
Validator
  
构造 Validator 后,每当 ResourceManager 又调度一个“change”事件以指示已通过某种方式更改了本地化资源时,将会调用此方法。
Validator
事件
 事件 摘要 定义方
 Inherited[广播事件] Flash Player 或 AIR 应用程序获得操作系统焦点并变为活动状态时将调度此事件。EventDispatcher
 Inherited[广播事件] Flash Player 或 AIR 应用程序失去操作系统焦点并变为非活动状态时将调度此事件。EventDispatcher
  在验证失败时调度。Validator
  在验证成功时调度。Validator
受保护的常量
 常量定义方
  DECIMAL_DIGITS : String = "0123456789"
[静态] 包含十进制数字 0 到 9 的字符串。
Validator
  ROMAN_LETTERS : String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"
[静态] 包含大写和小写罗马字母(“A”到“Z”和“a”到“z”)的字符串。
Validator
属性详细信息
actualListeners属性
actualListeners:Array  [只读 (read-only)]

包含侦听器对象(如果有)的数组或源对象。用于确定向哪个对象通知验证结果。



实现
    protected function get actualListeners():Array
actualTrigger属性 
actualTrigger:IEventDispatcher  [只读 (read-only)]

包含触发器对象(如果有)或源对象。用于确定 triggerEvent 的侦听器对象。



实现
    protected function get actualTrigger():IEventDispatcher
enabled属性 
enabled:Boolean  [读写]

将此值设置为 false 将停止验证程序执行验证操作。禁用验证程序时,它不调度任何事件,validate() 方法返回 null。

默认值为 true.



实现
    public function get enabled():Boolean
    public function set enabled(value:Boolean):void
listener属性 
listener:Object  [读写]

指定验证侦听器。

如果不指定侦听器,则 Flex 使用 source 属性的值。Flex 确定源组件后,它将更改组件的边框颜色,显示错误消息(如果验证失败)或者隐藏任何现有错误消息(如果验证成功)。



实现
    public function get listener():Object
    public function set listener(value:Object):void
property属性 
property:String  [读写]

一个字符串,用于指定包含要验证的值的 source 对象的属性名称。该属性为可选项,但如果指定 source,则应同时设置此属性的值。

默认值为 null.



实现
    public function get property():String
    public function set property(value:String):void
required属性 
public var required:Boolean = true

如果为 true,则指定缺少值或空值将导致验证错误。

默认值为 true.

requiredFieldError属性 
requiredFieldError:String  [读写]

缺少值和 required 属性为 true 时的错误消息。

默认值为 "This field is required.".



实现
    public function get requiredFieldError():String
    public function set requiredFieldError(value:String):void
resourceManager属性 
resourceManager:IResourceManager  [只读 (read-only)]

引用管理所有应用程序本地化资源的对象。此项是 singleton 实例,实现 IResourceManager 接口。

此属性可用作数据绑定的源。修改此属性后,将调度 unused 事件。



实现
    protected function get resourceManager():IResourceManager
source属性 
source:Object  [读写]

指定包含要验证的属性的对象。将此设置为组件或数据模型的实例。使用 MXML 中的数据绑定语法指定该值。此属性支持使用句点分隔的字符串指定嵌套属性。如果为 source 属性指定值,则应该同时为 property 属性指定值。source 属性是可选的。

默认值为 null.



实现
    public function get source():Object
    public function set source(value:Object):void
subFields属性 
protected var subFields:Array

一个字符串数组,其中包含传递到 validate() 方法的 value 对象中所含属性的名称。例如,CreditCardValidator 将此属性设置为 [ "cardNumber", "cardType" ]。此值表示传递到 validate() 方法的 value 对象应该包含 cardNumbercardType 属性。

验证多个数据字段的 Validator 类的子类(如 CreditCardValidator 和 DateValidator)应该在其构造函数中分配这一属性。

trigger属性 
trigger:IEventDispatcher  [读写]

指定生成触发验证程序的组件。如果省略,则在默认情况下,Flex 使用 source 属性的值。当 trigger 调度 triggerEvent 时,执行验证。



实现
    public function get trigger():IEventDispatcher
    public function set trigger(value:IEventDispatcher):void
triggerEvent属性 
triggerEvent:String  [读写]

指定触发验证的事件。如果省略,则 Flex 使用 valueCommit 事件。当用户完成在控件中输入数据时,Flex 调度 valueCommit 事件。通常,当用户从组件删除焦点或者以编程方式更改属性值时发生此操作。如果希望验证程序忽略所有事件,则将 triggerEvent 设置为空字符串 ("")。



实现
    public function get triggerEvent():String
    public function set triggerEvent(value:String):void
构造函数详细信息
Validator()构造函数
public function Validator()

构造函数。

方法详细信息
addListenerHandler()方法
protected function addListenerHandler():void

为从验证程序调度的 validinvalid 事件设置所有侦听器。如果这些侦听器或资源之一的值发生更改,则 Validator 类的子类应先调用 removeListenerHandler() 方法,然后再调用 addListenerHandler() 方法。CreditCardValidator 和 DateValidator 类在内部使用此函数。

doValidation()方法 
protected function doValidation(value:Object):Array

执行此验证程序的验证逻辑,包括验证缺少值或空值是否会导致如 required 属性的值所定义的验证错误。

如果创建 validator 类的子类,则必须覆盖此方法。

参数

value:Object — 要验证的值。

返回
Array — 对于无效结果,为 ValidationResult 对象的数组,其中包含验证程序所检查的每个验证失败的字段的一个 ValidationResult 对象。

另请参见

getValueFromSource()方法 
protected function getValueFromSource():Object

返回要验证的对象。诸如 CreditCardValidator 和 DateValidator 类之类的子类将覆盖此方法,因为它们需要从多个子字段访问值。

返回
Object — 要验证的对象。
handleResults()方法 
protected function handleResults(errorResults:Array):ValidationResultEvent

从错误结果数组返回 ValidationResultEvent。在内部,此函数从 doValidation() 方法获取结果,并将其置于 ValidationResultEvent 对象中。如果诸如 RegExpValidator 类之类的子类输出 ValidationResultEvent 对象的子类(如 RegExpValidationResult 对象)且需要使用其它信息填充该对象,则它们应该覆盖此函数。永远不要直接调用此函数,并且应该极少覆盖它。

参数

errorResults:Array — ValidationResult 对象的数组。

返回
ValidationResultEventvalidate() 方法返回的 ValidationResultEvent。
initialized()方法 
public function initialized(document:Object, id:String):void

如果 Validator 是使用 MXML 标签创建的,则由 MXML 编译器自动调用。

参数

document:Object — 包含此 Validator 的 MXML 文档。
 
id:String — 已忽略。

isRealValue()方法 
protected function isRealValue(value:Object):Boolean

如果 value 不为 null,则返回 true

参数

value:Object — 要测试的值。

返回
Boolean — 如果 value 不为 null,则返回 true
removeListenerHandler()方法 
protected function removeListenerHandler():void

断开从验证程序调度的 validinvalid 事件的所有侦听器的连接。如果这些侦听器或资源之一的值发生更改,则子类应先调用 removeListenerHandler() 方法,然后再调用 addListenerHandler 方法。CreditCardValidator 和 DateValidator 类在内部使用此函数。

resourcesChanged()方法 
protected function resourcesChanged():void

构造 Validator 后,每当 ResourceManager 又调度一个 "change" 事件以指示已通过某种方式更改了本地化资源时,将会调用此方法。

在下列情形中调度此事件:设置 ResourceManager 的 localeChain 属性时,资源模块完成加载时,以及调用 ResourceManager 的 update() 方法时。

子类应覆盖此方法,并在调用 super.resourcesChanged() 后,执行任何适当的操作以响应新资源值。

validate()方法 
public function validate(value:Object = null, suppressEvents:Boolean = false):ValidationResultEvent

执行验证并(可选)将结果通知给侦听器。

参数

value:Object (default = null) — 要验证的可选值。如果为 null,则验证程序使用 sourceproperty 属性确定值。如果指定此参数,则还应设置 listener 属性以指定验证错误消息的目标组件。
 
suppressEvents:Boolean (default = false) — 如果为 false,则在验证后,验证程序会将结果通知给侦听器。

返回
ValidationResultEvent — 包含验证结果的 ValidationResultEvent 对象。如果验证成功,则 ValidationResultEvent.results 数组属性为空。如果验证失败,则 ValidationResultEvent.results 数组属性包含验证程序所检查的每个字段的一个 ValidationResult 对象,对于验证失败的字段和通过验证的字段都是如此。检查 ValidationResult.isError 属性以确定字段的验证是通过还是失败。

另请参见

validateAll()方法 
public static function validateAll(validators:Array):Array

调用 validators 数组中的所有验证程序。返回一个数组,其中包含每个失败验证程序的一个 ValidationResultEvent 对象。如果所有验证程序都成功,则返回空数组。

参数

validators:Array — 包含要执行的 Validator 对象的数组。

返回
Array — ValidationResultEvent 对象的数组,其中数组包含每个失败验证程序的一个 ValidationResultEvent 对象。如果所有验证程序都成功,则数组为空。
事件详细信息
invalid 事件
事件对象类型: mx.events.ValidationResultEvent
属性 ValidationResultEvent.type = mx.events.ValidationResultEvent.INVALID

在验证失败时调度。

ValidationResultEvent.INVALID 常数可为 invalid 事件定义事件对象的 type 属性值。该常数的值是“invalid”。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
field 验证失败的字段名称。
message 单个字符串,其中包含结果 Array 中所有 ValidationResult 对象的错误消息。
results ValidationResult 对象的数组,每个对象对应一个验证的字段。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
valid 事件  
事件对象类型: mx.events.ValidationResultEvent
属性 ValidationResultEvent.type = mx.events.ValidationResultEvent.VALID

在验证成功时调度。

ValidationResultEvent.VALID 常数可为 valid 事件定义事件对象的 type 属性值。该常数的值是“valid”。

事件对象的属性有下列值:

属性
bubbles false
cancelable false
currentTarget 用于定义处理该事件的事件侦听器的 Object。例如,如果您使用 myButton.addEventListener() 注册某个事件侦听器,则 myButton 为 currentTarget 的值。
field 一个空字 String。
message 一个空字 String。
results 一个空 Array。
target 调度该事件的 Object;它不一定是侦听该事件的 Object。使用 currentTarget 属性始终可以访问侦听事件的 Object。
常量详细信息
DECIMAL_DIGITS常量
protected static const DECIMAL_DIGITS:String = "0123456789"

包含十进制数字 0 到 9 的字符串。

ROMAN_LETTERS常量 
protected static const ROMAN_LETTERS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"

包含大写和小写罗马字母(“A”到“Z”和“a”到“z”)的字符串。

示例 如何使用示例
SimpleValidatorExample.mxml
<?xml version="1.0"?>
<!-- Simple example to demonstrate the Validator class. -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml">

    <mx:Script>
        <![CDATA[

            // Import necessary classes.
            import mx.controls.Alert;
            import mx.events.ValidationResultEvent;
            
            // Event listener for the valid and invalid events.
            private function handleValid(eventObj:ValidationResultEvent):void {
                if(eventObj.type==ValidationResultEvent.VALID)    
                    // Enable Submit button.
                    submitButton.enabled = true;
                else
                    submitButton.enabled = false;
            }

            // Submit form is everything is valid. 
            private function submitForm():void {
                Alert.show("Form Submitted!");
            }

        ]]>
    </mx:Script>

    <!-- The Validator class defines the required property and the validator events
         used by all validator subclasses. -->
    <mx:Validator id="reqValid" required="true"
        source="{fname}" property="text" 
        valid="handleValid(event)" invalid="handleValid(event)"/>
        
    <mx:Panel title="Validator Example" width="100%" height="100%" 
            paddingTop="5" paddingLeft="5" paddingRight="5" paddingBottom="5">

        <mx:Form>
            <mx:Text width="100%" color="blue"
                text="Enter a value in the Name field before you can submit. The E-mail field is optional."/>

            <mx:FormItem label="Name: " required="true">
                <mx:TextInput id="fname" width="100%"/>
            </mx:FormItem>

            <mx:FormItem label="E-mail address: " required="false">
                <mx:TextInput id="email" width="100%"/>
            </mx:FormItem>
            
            <mx:FormItem>
                <mx:Button id="submitButton" enabled="false" 
                    label="Submit" click="submitForm();"/>
            </mx:FormItem>
        </mx:Form>

    </mx:Panel>
</mx:Application>