当用户编辑div
with contenteditable
属性的内容时,我想运行一个函数。什么相当于一个onchange
事件?
我使用的是jQuery,因此首选使用jQuery的解决方案。谢谢!
当用户编辑div
with contenteditable
属性的内容时,我想运行一个函数。什么相当于一个onchange
事件?
我使用的是jQuery,因此首选使用jQuery的解决方案。谢谢!
我建议将侦听器附加到由editable元素触发的关键事件上,尽管您需要注意,keydown
并且keypress
在更改内容本身之前会触发事件。这不会涵盖更改内容的所有可能方法:用户还可以从“编辑”或上下文浏览器菜单中使用剪切,复制和粘贴,因此您可能也想处理cut
copy
和paste
事件。此外,用户可以放置文本或其他内容,因此在那里有更多事件(mouseup
例如,)。您可能希望轮询元素的内容作为后备。
2014年10月29日更新
从长远来看,HTML5 input
事件是答案。在撰写本文时,contenteditable
当前Mozilla(来自Firefox 14)和WebKit / Blink浏览器中的元素均支持该功能,但IE不支持。
演示:
document.getElementById("editor").addEventListener("input", function() {
console.log("input event fired");
}, false);
<div contenteditable="true" id="editor">Please type something in here</div>
考虑使用MutationObserver。这些观察者旨在对DOM中的更改做出反应,并作为对Mutation Events的有效替代。
优点:
缺点:
学到更多:
非jQuery快速又肮脏的答案: