如何以编程方式从flex组件中删除验证

时间:2010-02-11 09:53:57

标签: flex actionscript-3

如何以编程方式从flex组件中删除验证 这是我的方法

public static function validateRequired(txt:TextInput, errorMessage:String="This field is required"):Boolean
        {
                var v:Validator = new Validator();

                v.listener = txt;
                var result:ValidationResultEvent = v.validate(txt.text);
                var returnResult:Boolean = (result.type == ValidationResultEvent.VALID);
                //Alert.show("validation result is " + returnResult);
                if (!returnResult) {
                    v.requiredFieldError = errorMessage;
                }
                return returnResult;
        }

但是,每次我创建新的验证器时,弹出窗口都包含多个消息,如

此字段是必填字段 此字段是必填字段。

如何删除附带组件的错误消息?

3 个答案:

答案 0 :(得分:4)

我遇到了同样的问题,我明白我必须在下一次验证之前清除最后一次验证。

private function resetValidationWarnings():void {
                for each (var validator:Validator in arrValidators) {
                    validator.dispatchEvent(new ValidationResultEvent(ValidationResultEvent.VALID));
                }
            }

这是一个有点POG,但它完成了工作!

希望它有所帮助!

答案 1 :(得分:3)

Validator.enabled属性允许您启用和禁用验证程序。当enabled属性的值为true时,启用验证器;当值为false时,验证器被禁用。禁用验证程序时,它不会调度任何事件,并且validate()方法返回null。

例如,您可以使用数据绑定设置enabled属性,如下面的代码所示:

<?xml version="1.0"?>
<!-- validators\EnableVal.mxml -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> 

    <mx:ZipCodeValidator id="zcVal" 
        source="{inputA}" 
        property="text" 
        required="true" 
        enabled="{enableV.selected}"/>

    <mx:TextInput id="inputA"/> 
    <mx:TextInput/> 
    <mx:CheckBox id="enableV" 
        label="Validate input?"/>
</mx:Application>

答案 2 :(得分:0)

我也遇到过类似的问题。在我的例子中,根本原因是我每次调用验证时都创建了验证器对象(就像你一样)。因此,UIComponent将其视为不同的验证器对象(请参阅UIComponent.errorObjectArray)并再次存储错误消息。解决方案是拥有一个全局或静态验证器,它为我解决了重复的错误消息。