什么时候textarea改变事件不被触发?

我依赖于每当textarea的内容发生变化时触发的更改事件。 根据jquery文档 ,在textarea失去焦点之前,这不会被触发。 在什么情况下不能触发事件? 是否会破坏页面,返回,点击链接等,总是会导致textarea失去焦点并被解雇?

换句话说,是否有可能在没有焦点的文本区域丢失输入的情况下离开页面?

使用不同测试时,在以下情况下不会触发更改事件:

  • 用户点击浏览器的任何按钮 (后退按钮,刷新,主页按钮……) (Linux上的Chrome,Firefox和Opera,但点击地址栏时触发)
  • 用户使用快捷方式(f5,ctrl + u …) (在Chrome + Firefox + Opera上测试)

你可以在这里测试一个例子: http : //jsfiddle.net/Atinux/S6TkP/

因此,我建议您在输入和textarea表单上使用keyUp和keyDown事件。

我会去W3c对事件的定义。

[http://www.w3.org/TR/DOM-Level-2-Events/events.html][1]

当控件失去输入焦点并且自获得焦点后其值已被修改时,会发生更改事件。 此事件对INPUTSELECTTEXTAREA元素有效。

  • 泡泡:是的
  • 可取消:否
  • 上下文信息:无

任何时候它失去焦点,它应该被解雇。

在Safari和Chrome上,无论何时更改文本,都会触发CHANGE事件。 但是,如果删除所有文本,则不再触发CHANGE事件。 这是一个错误。 这就是人们使用KEYPRESS事件作为解决方法的原因

该事件将被触发但您无法可靠地收听。 当页面卸载时,表单元素会失去焦点,但是当偶数被触发以及监听器被调用时会出现竞争条件。 如果在页面完成卸载之前调用了侦听器,则可能会得到回调但是远远没有保证。

如果您希望能够更可靠地跟踪textarea的更改,那么最好听一下keypress事件。

最好使用keyUp / keyDown事件导致更改事件仅在textare / input更改且元素失去焦点时触发。