$(document).on(“input”,“。SomeClass”)适用于Chrome,但不适用于IE

我有一个带有contenteditable标签的span,我有一个用于检测输入的函数..

//TextArea  //Function $(document).on("input", ".SomeClass", function () { console.log("input entered"); }); 

这适用于Chrome,但不适用于IE 11或更低版本。 我似乎无法在网上找到任何提及它,并想知道是否有人可以给我关于如何使这个工作或更好的方法的信息。

谢谢

这是IE10和IE11中报告的错误(#794285) : contenteditable元素不会触发input事件。

解决方法是处理不同的事件类型以及input ,例如keypresspastechange

 $(document).on("input keypress paste change", ".SomeClass", function () { console.log("input entered"); }); 

JSFiddle演示

也许尝试更广泛支持的事件,如keydownkeypress而不是输入?

 $(document).on("keypress", ".SomeClass", function () { console.log("input entered"); }); 

这有点复杂,它可能会使用一些重构,但在这里你去:

 var initialState; $( document ).ready(function() { initialState = document.getElementById("span").innerHTML; }); $(document).keydown( function () { var currentState = document.getElementById("span").innerHTML; if( initialState != currentState) { console.log("Content changed!"); } }); 

基本上,您在加载文档时“捕获”跨度,并在每次用户按下键时添加事件侦听器。

祝好运!