Nam*_*ame 16 javascript html5 internet-explorer-9
我们使用什么最干净的解决方案来克服当我们点击BACKSPACE/DEL/do CUT时IE9不会触发输入事件的问题?
最干净的我的意思是代码不会发臭.
我为退格/删除/剪切开发了IE9 polyfill.
(function (d) {
if (navigator.userAgent.indexOf('MSIE 9') === -1) return;
d.addEventListener('selectionchange', function() {
var el = d.activeElement;
if (el.tagName === 'TEXTAREA' || (el.tagName === 'INPUT' && el.type === 'text')) {
var ev = d.createEvent('CustomEvent');
ev.initCustomEvent('input', true, true, {});
el.dispatchEvent(ev);
}
});
})(document);
Run Code Online (Sandbox Code Playgroud)
出于某种原因,在IE9中,当您在文本字段内删除时,selectionchange会触发该事件.
所以,你唯一需要做的是:检查选择的活动元素是否是输入,然后我告诉元素调度input事件,就像它应该做的那样.
将代码放在页面的任何位置,所有删除操作现在都会触发input事件!
你可以尝试html5Forms (以前的 html5widgets)
\n\n\n\n\n由于我讨厌 COBOL,因此我决定将我的 html5Widgets 库更新为:
\n\n\n
\n- 为不\xe2\x80\x99t支持的浏览器添加对oninput的支持(例如\n IE7和8)
\n- 当在任何输入节点内按下退格键和删除键时,强制 IE9 在输入时触发表单\xe2\x80\x99s。
\n- 当在任何输入节点上触发 cut 事件时,强制 IE9 触发 form\xe2\x80\x99s oninput。
\n
这是添加此支持的提交的链接
\n