每当textarea的内容发生变化时,我都会依赖于触发的更改事件。根据{{3}},在textarea失去焦点之前,这不会被触发。在什么情况下不能触发事件?是否会破坏页面,返回,点击链接等,总是会导致textarea失去焦点并被解雇?
或者换句话说,是否有可能在没有焦点的文本区域丢失输入的情况下留下页面?
答案 0 :(得分:3)
使用不同测试时,在以下情况下不会触发更改事件:
您可以在此处测试一个示例:http://jsfiddle.net/Atinux/S6TkP/
所以我建议你在输入和textarea表单上另外使用keyUp和keyDown事件。
答案 1 :(得分:2)
我会参加W3c对事件的定义。
[http://www.w3.org/TR/DOM-Level-2-Events/events.html] [1]
当控件丢失输入焦点及其时,会发生更改事件 自获得关注以来,价值已被修改。此活动有效
INPUT
,SELECT
和TEXTAREA
元素。
- 气泡:是的
- 可取消:否
- 上下文信息:无
任何时候失去焦点,都应该被解雇。
答案 2 :(得分:1)
在Safari和Chrome上,无论何时更改文本,都会触发CHANGE事件。但是,如果删除所有文本,则不再触发CHANGE事件。这是一个错误。这就是人们使用KEYPRESS事件作为解决方法的原因
答案 3 :(得分:0)
该事件将被触发但您无法可靠地收听。当页面卸载时,表单元素会失去焦点,但是当偶数被触发以及侦听器被调用时会出现竞争条件。 如果在页面完成卸载之前调用了您的侦听器,那么<em>可能会获得回调,但这远远不能保证。
如果您希望能够更可靠地跟踪textarea
的更改,最好听取keypress
事件。
答案 4 :(得分:0)
最好使用keyUp / keyDown事件导致更改事件仅在textare / input更改且元素失去焦点时触发。