【问题标题】:Unselect Flex TextInput with enter key使用回车键取消选择 Flex TextInput
【发布时间】:2010-01-03 13:33:55
【问题描述】:

在 Flex 中,如何在按下 Enter 时将 TextInput 设置为“未选中”(这意味着不仅焦点不在,而且如果您在键盘上输入文本,TextInput 将不会改变)钥匙?我知道如何使用 FocusManager 更改具有焦点的组件,但我不想更改具有焦点的组件,我只想不选择这个组件。

【问题讨论】:

    标签: actionscript-3 flex3 focus


    【解决方案1】:

    我更像是一名 AS3 开发人员,所以我不确定这在 Flex 中是否 100% 有效,但您可以在键处理程序上使用 preventDefault() 并将舞台的焦点设置为 null。

    textinput.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
    
    protected function keyDownHandler(event:KeyboardEvent):void {
        if (event.keyCode == Keyboard.ENTER) {
            event.preventDefault();
    
            stage.focus = null;
        }
    }
    

    【讨论】:

    • 如果它在非 Flex 环境中工作并且只是纯 ActionScript 3,那么它也应该在 Flex 环境中工作。
    【解决方案2】:

    textinput.setSelection(0,0)

    【讨论】:

      【解决方案3】:

      您可以使用setSelection() 函数,该函数可用于具有函数签名的 MX TextInput 和 TextArea 控件:

      public function setSelection(beginIndex:int, endIndex:int):void
      

      并接受两个参数,这些参数表示要选择的字符的开始和结束从零开始的索引。起始索引字符将包含在所选内容中,结束索引是您所选内容中最后一个字符之后的索引。

      使用textinput.setSelection(0,0) 之类的内容基本上不会在文本输入字段中选择任何内容。这适用于 Flex 3。

      但是,如果您使用的是 Flex 4,则使用 selectRange(anchorIndex:int, activeIndex:int) 函数更合适,并且功能相同。 setSelection() 和 selectRange() 的区别在于后者是立即完成的。如果任一位置为负数,则 selectRange() 函数将取消选择文本范围。

      【讨论】:

        猜你喜欢
        • 2017-07-07
        • 2018-09-19
        • 1970-01-01
        • 1970-01-01
        • 2010-11-13
        • 1970-01-01
        • 1970-01-01
        • 2017-01-08
        • 1970-01-01
        相关资源
        最近更新 更多