未启用验证时,在textInput上清除验证

时间:2009-07-13 17:44:08

标签: flex actionscript-3 validation flex3 uicomponents

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

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

有没有人知道如何做到这一点我尝试将内部验证器实例设置为enabled = false并调度新的focusOutEvent,如下所示,但验证错误格式仍然应用于textInput控制。

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

有什么想法吗?

由于

乔恩

3 个答案:

答案 0 :(得分:8)

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

myField.errorString = "";

答案 1 :(得分:3)

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

请将errorString替换为ValidationResultEvent,以此编程方式解决此问题:

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

答案 2 :(得分:0)

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