【问题标题】:Can I make a TextInput required?我可以要求 TextInput 吗?
【发布时间】:2016-11-07 07:16:37
【问题描述】:

我有很多类似的代码

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

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

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

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

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

【问题讨论】:

    标签: validation actionscript-3 apache-flex textinput


    【解决方案1】:

    要使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

    希望能有所帮助。

    【讨论】:

    • 我将推迟一天接受这个,以防我们都忽略了一些简单的事情,但是是的,这解决了我的问题,并且是我正在寻找的东西。
    【解决方案2】:

    试试:

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

    如果这就是您需要的所有代码(不需要额外的命令),那么只需一行:

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

    【讨论】:

    • 我认为 OP 的问题是避免重复代码而不是代码本身 ;-)
    • 嗨@akmozo,你为什么这么认为?我查看了“TextInput 是否有一些属性可以用来自动检查空字符串?”...他们正在通过IS NOT "" 进行检查,所以我推荐IF length BIGGER THAN 0 检查的代码。这是基于“我想添加一个长度大于0的附加限制”。他们从来没有说过不重复。我的理解是他们更喜欢通过 String length 而不是 String contents 来检查。
    • 嗨,我认为 OP 正在寻找一些属性,如 HTML5 的 required 一个强制用户输入文本(或者至少检查输入是否不为空,而不需要每次编写相同的检查代码时间:txt.text != ''txt.length == 0 ...) ...
    • @Akmozo 请编辑他们的问题以了解这一点。您比 Asker 做得更有意义(特别是:HTML5 的 required 示例)。他们甚至没有提到组件或标签 Flex。
    【解决方案3】:

    也许,这不是一种解决方案,但是,您可以将 TextField 放入具有“必填”字段的 FormItem 中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-27
      • 2017-04-18
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多