【问题标题】:Clear validation on textInput when validation is not enabled未启用验证时清除 textInput 上的验证
【发布时间】:2009-07-13 17:44:08
【问题描述】:

我创建了一个自定义 textInput 组件,它使用私有验证器处理它自己的验证。根据组件的状态启用验证,即当组件状态为“编辑”时启用验证。

但是,当状态从编辑更改时,内部验证器设置为未启用,但文本框上的验证错误不清除 - textInput 仍然有红色边框,并且在鼠标悬停时出现验证错误。我想要发生的是,当禁用验证器时,错误格式和错误消息会从文本输入控件中清除。

有谁知道如何做到这一点我尝试将内部验证器实例设置为 enabled = false 并按如下方式调度一个新的 focusOutEvent 但验证错误格式仍应用于 textInput 控件。

                    _validatorInstance.enabled = false;
                //clear the validation errors if any
                dispatchEvent(new FocusEvent(FocusEvent.FOCUS_OUT));

有什么想法吗?

谢谢

乔恩

【问题讨论】:

  • 这不是答案,而是评论,如果 myField.errorString = "";是使用验证器时清除错误的最佳方法,我可以跳过使用验证器,自己检查条件,自己设置错误字符串并自己清除它们。必须有比手动清除错误字符串更好的方法。如果我必须编写更多代码并指定每个控件来清除它的错误字符串,那么使用验证器有什么好处?

标签: apache-flex actionscript-3 validation flex3 uicomponents


【解决方案1】:

据我所知,您可以从错误字段中清除 errorString 并且错误格式应该消失:

myField.errorString = "";

【讨论】:

    【解决方案2】:

    我发现了有关使用 errorString 从错误字段中清除 errorString 的问题。一旦错误字符串被清除(以编程方式),绑定到验证器的组件不会在后续验证中显示错误提示。

    请用 ValidationResultEvent 替换 errorString 的使用,像这样以编程方式触发:

    var evt:ValidationResultEvent = new ValidationResultEvent(ValidationResultEvent.VALID);
    validatorInstance.dispatchEvent(evt); 
    

    此问题在使用 4.0 SDK 编译的代码中很普遍,而从 4.5 SDK 开始,此问题已得到修复。

    这是 JIRA 中报告的错误: http://bugs.adobe.com/jira/browse/SDK-29270

    【讨论】:

      【解决方案3】:

      请注意,将 errorString 设置为空白不会调度有效或无效事件。

      【讨论】:

        猜你喜欢
        • 2011-07-15
        • 1970-01-01
        • 1970-01-01
        • 2011-03-10
        • 2011-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多