apache-flex Flex移动的验证:如何消除红色错误边框?

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

我在我的flex移动的应用程序中使用了验证器。我想在验证器触发错误时删除红色边框。

<mx:EmailValidator id="emailV"  source="{login_txt}" property="text"  triggerEvent="click" trigger="{connexion_btn}"  />
    <mx:StringValidator id="passwordV" source="{password_txt}" property="text"  trigger="{connexion_btn}"  triggerEvent="click" />

我试探着:

target.errorString = null; // not good

有线索吗?

gcmastyq

gcmastyq1#

通常我会将errorString设置为空字符串;并且我在带有红色字符串的组件示例上执行此操作。我相信在这种情况下,它将是您的触发器组件:

login_txt.errorString = '';
password_txt.errorString = '';

根据提供的有限代码,我不清楚您设置errorString的目标是否与指定为验证器源代码的实际组件相同。有可能,我们只是没有提供足够的信息来确定。

jmo0nnb3

jmo0nnb32#

红色光晕是在spark.skins.spark.ErrorSkin中定义的,它是UIComponent的errorSkin属性的默认值。您不能将此属性设置为null,但可以扩展ErrorSkin类并覆盖生成光晕的方法(即updateDisplayList和processBitmap)。
我创建了一个NullFocusSkin,用来删除红色的错误光晕和蓝色的焦点光晕。我将组件的errorSkin和focusSkin属性设置为该值,然后很快-不再有讨厌的光晕,也不需要手动清除errorString!

import spark.skins.spark.HighlightBitmapCaptureSkin;

public class NullFocusSkin extends HighlightBitmapCaptureSkin
{
    override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void
    {   
        // Do nothing.
    }

    override protected function processBitmap():void
    {
        // Do nothing.
    }
}
b4wnujal

b4wnujal3#

除了将错误字符串设置为空之外,我还必须调用showFocus(),否则红色边框不会消失。

login.errorString = '';
login.focusManager.showFocus();

相关问题