2016-07-05 76 views
0

我有很多类似的代码我可以制作TextInput吗?

if (myTextInput.text != "") { 
    handleEvent(); 
} 

确实的TextInput有一些财产,我可以使用自动检查一个空字符串?
如何,如果我把它喜欢类似:

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

那么如果文字是字母数字myInputHandler()只被调用。我想添加一个额外的限制,长度大于0.

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

回答

3

使“嘀”一声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(); 
      } 
     } 

    } 
} 

当然,这只是一个例子,你可以用,当你的用户输入的左空任何你想要的行为......

然后使用新组件:

<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

希望能有所帮助。

+0

我打算继续接受这一天,如果有简单的事情我们都可以忽略,但是这是解决我的问题,并且是我正在寻找的事情。 – JETM

0

尝试:

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

如果这是你需要的所有代码(没有额外的命令),那么刚刚做的一个行:

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

我认为,OP的问题是避免重复的代码而不是代码本身; - ) – akmozo

+0

嗨@akmozo,你为什么这么想?我看了一下_“TextInput是否有一些属性可以用来自动检查一个空字符串?”_...他们用'IS NOT'“'检查,所以我推荐'IF长度大于0'的代码检查。这是基于_“我想添加一个额外的限制,长度大于0”_。他们从来没有说过不重复。我的理解是,他们更喜欢用** String length **而不是** String内容**进行检查。 –

+1

嗨,我认为,OP正在寻找一些属性,如HTML5的'required',以强制用户输入文本(或至少检查输入是否为空,而不必每次都写入相同的检查代码:'txt.text! ='''或'txt.length == 0' ...) – akmozo

0

也许,这是不是一种解决方案,但是,你可以把文本字段成的FormItem,它具有“必需的”场