【发布时间】:2010-01-03 13:33:55
【问题描述】:
在 Flex 中,如何在按下 Enter 时将 TextInput 设置为“未选中”(这意味着不仅焦点不在,而且如果您在键盘上输入文本,TextInput 将不会改变)钥匙?我知道如何使用 FocusManager 更改具有焦点的组件,但我不想更改具有焦点的组件,我只想不选择这个组件。
【问题讨论】:
标签: actionscript-3 flex3 focus
在 Flex 中,如何在按下 Enter 时将 TextInput 设置为“未选中”(这意味着不仅焦点不在,而且如果您在键盘上输入文本,TextInput 将不会改变)钥匙?我知道如何使用 FocusManager 更改具有焦点的组件,但我不想更改具有焦点的组件,我只想不选择这个组件。
【问题讨论】:
标签: actionscript-3 flex3 focus
我更像是一名 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;
}
}
【讨论】:
textinput.setSelection(0,0)
【讨论】:
您可以使用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() 函数将取消选择文本范围。
【讨论】: