我开始使用$('#myInput').bind('input', function() {
,但这在IE中不起作用。
检测文本输入字段的任何更改的最佳跨浏览器解决方案是什么,包括用户是否复制并粘贴到字段中?
答案 0 :(得分:0)
他们很难看。不必要。几乎每个人都讨厌。但是在IE上测试用户输入的少数几个也是迄今为止最具弹性的方法之一。
<强>理由:强>
.on('input', function(){})
,并且在IE9-10中有错误 - 删除字符时不会触发。keyup
远非完美,您可以从右键菜单和工具栏粘贴。paste
事件得到了很好的支持,但键盘输入和粘贴并不是输入值的唯一方法。您也可以在输入中选择,拖放文本。这是实现IE支持时首选间隔的原因之一。在IE中,您还可以使用onpropertychange
作为后备,但只要对象属性发生更改,它就会触发,从而强制您像使用Interval一样执行类似的“值更改”验证。因此,我宁愿编写一个在所有浏览器中都有效的间隔,而不是为所有浏览器编写代码,而为IE编写另一个代码。
所以我建议的解决方案是:
使用如下间隔:
$(function() {
var input = $('#foo'); //change this selector to your input
function checkchange() {
var v = input.val();
if (input.data('v') === v) return;
input.data('v', v);
//do stuff
}
input.data('v', input.val());
setInterval(checkchange, 100);
});
或2.将GCF放在模态上并隐藏X按钮,因此强制IE用户安装它,您将永远不必再次编写IE特定的代码 - 我随时都可以这样做!然后,我的目标受众通常不包括IE用户。