首先,我知道这有
been
asked
before.我再次要求希望更新版本的常见库如jQuery解决了这个问题.这可能是一厢情愿的想法,我知道……
话虽如此,有没有办法检测所有更改(按键,粘贴,自动更正)到< input>然而?我正在使用$(“#myElement”).bind(‘input propertychange’,function(e){…});直到IE9出现并打破它(它不会在退格/剪切/删除时触发).
我知道有三个选项,所有选项都有缺点:
>绑定更多事件(keyup,paste等)并使用setTimeout忽略重复项.
>根据浏览器检测绑定到特定事件.
>绑定更多事件,使用jQuery.data()跟踪旧值,并在触发处理程序之前与之进行比较(如this answer所示).
如果还没有“更好的方法”,你更喜欢上述哪种,为什么?
最佳答案 如果您只支持现代浏览器,那么有一种方法可以使用单个事件跨输入:输入
$(myelement).on('input',function(){
console.log(this.value);
});
如果您希望继续支持旧浏览器,则必须继续为它们使用变通方法,因为旧版本的浏览器不会被修复.
我更喜欢将keydown与输入配对,因为keydown会在触发输入事件的同时触发.