apache-flex 在未启用验证时清除textInput的验证

kninwzqo  于 2022-11-01  发布在  Apache
关注(0)|答案(3)|浏览(135)

我已经创建了一个自定义的textInput组件,它使用私有验证器来处理自己的验证。验证的启用取决于组件的状态,即当组件状态为“edit”时,验证将启用。
但是,当状态从编辑状态更改为未启用内部验证程序时,文本框上的验证错误并没有清除-textInput仍然有红色边框,鼠标悬停时会出现验证错误。我希望发生的情况是,当禁用验证程序时,文本输入控件中的错误格式和错误消息会清除。
有人知道如何做到这一点吗?我尝试将内部验证器示例设置为enabled = false,并如下所示调度一个新的focusOutEvent,但验证错误格式仍然应用于textInput控件。

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

有什么想法吗?
谢谢
乔恩

368yc8dk

368yc8dk1#

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

myField.errorString = "";
2mbi3lxu

2mbi3lxu2#

我发现使用errorString清除错误字段中的errorString时出现了问题。一旦errorString被清除(以编程方式),绑定到验证器的组件在后续验证时就不会显示错误提示。
请将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

mxg2im7a

mxg2im7a3#

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

相关问题