从Flex TextInput控件捕获用户输入:要使用哪个事件?

Nik*_*man 15 apache-flex events flex3 textinput

我应该使用changeor textInput事件来捕获TextInput控件上的用户输入吗?为什么?

has*_*seg 46

textInput仅当用户在控件中输入文本时才调度.change另一方面,在用户提交的每个更改上发送.因此,例如,如果用户删除文本的一部分,则仅change调度该事件.

通过代码修改文本时,不会调度这些内容:

flash.events.TextEvent.TEXT_INPUT:

"当用户在控件中键入,删除或粘贴文本时调度."

(忽略那里的"删除"一词 - 我只是尝试过,当用户删除文本时调度此事件)

flash.events.Event.CHANGE:

"当TextInput控件中的文本通过用户输入更改时调度.如果使用数据绑定或ActionScript代码更改文本,则不会发生此事件."

您还可以使用valueCommit事件,该事件在用户"提交"更改时调度(通常通过将焦点从文本字段移开),但请记住,在以编程方式更改字段值时也会调度此事件.

  • 非常感谢澄清的答案.作为旁注:我做了一些测试,发现在访问`textInput`事件的事件处理程序中的`text`属性时(使用`event.currentTarget.text`),我得到的值反映了`text`的值. _before_触发事件的按键. (2认同)