我可以要求 TextInput 吗?

Can I make a TextInput required?

我有很多像

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

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

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

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

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

尝试:

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

如果这就是您需要的全部代码(没有额外的命令),那么只需一行即可:

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

要创建一个 TextInput 组件 "required",例如,您可以创建自己的文本输入组件并使用 属性 来指示是否需要该控件,一些事件侦听器喜欢 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();
            }
        }

    }
}

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

然后使用那个新组件:

<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
               xmlns:s="library://ns.adobe.com/flex/spark" 
               xmlns:mx="library://ns.adobe.com/flex/mx" 
               <!-- don't forget to include the namespace definition for your custom component -->
               xmlns:MyComponent="myComponent.*">

    <MyComponent:MyTextInput required="true" restrict="A-Za-z0-9"/>

</s:Application>

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

希望能帮到你。

也许,这不是那种解决方案,但是,您可以将 TextField 放入具有 "required" 字段

的 FormItem 中