我可以创建TextInput吗?

时间:2016-07-05 12:35:51

标签: validation actionscript-3 flex textinput

我有很多像

这样的代码
if (myTextInput.text != "") {
    handleEvent();
}

TextInput是否有一些我可以用来自动检查空字符串的属性?
类似于我如何设置它:

<s:TextInput id="myInput" enter="myInputHandler()" restrict="A-Za-Z0-9"/>

然后myInputHandler()只有在文本为字母数字时才会被调用。我想添加一个长度大于0的额外限制。

我知道验证器,但我仍然需要手动调用它们。

3 个答案:

答案 0 :(得分:3)

要制作jar组件&#34; required&#34;,您可以创建自己的文本输入组件并使用属性来指示是否需要控件,以及某些事件像TextInput事件这样的监听器会强制用户在输入中输入内容。

为此,请举例:

FocusEvent.FOCUS_OUT

当然这只是一个例子,您可以在用户将输入留空时使用您想要的任何行为......

然后使用该新组件:

package myComponent
{
    import flash.events.FocusEvent;     
    import spark.components.TextInput;

    public dynamic class MyTextInput extends TextInput
    {
        private var _required:Boolean = false;
        public function MyTextInput()
        {
            super();
            this.addEventListener(FocusEvent.FOCUS_OUT, on_KeyDown);
        }
        public function set required(required:Boolean): void {
            this._required = required;
        }
        public function get required(): Boolean {
            return this._required;
        }       
        private function on_KeyDown(e:FocusEvent): void {           
            if(this.text == '' && this._required){
                this.setFocus();
            }
        }

    }
}

有关创建自己的组件的更多信息,请查看here

希望可以提供帮助。

答案 1 :(得分:0)

尝试:

if ( String(myTextInput.text).length > 0 ) 
{ 
    handleEvent(); 
}

如果那是你需要的所有代码(没有额外的命令),那么就像一行一样:

if ( String(myTextInput.text).length > 0 ) { handleEvent(); }

答案 2 :(得分:0)

也许,这不是那种解决方案,但是,您可以将TextField放入FormItem,它具有“必需”字段