我们的一位用户刚刚提出了这样一个事实:他们的浏览器自动填充不会导致 JS onChange 事件触发;这会导致我们的用户注册出现问题。
这是设计使然吗?有没有办法解决它?
我们的一位用户刚刚提出了这样一个事实:他们的浏览器自动填充不会导致 JS onChange 事件触发;这会导致我们的用户注册出现问题。
这是设计使然吗?有没有办法解决它?
我偶尔使用的一种解决方案是检查字段/输入/选择的值是否与其默认值不同。defaultValue 将是最初在标记中的值,而 value 是当前值,也就是选择或输入的值。即使表单是自动填充的,这也可能会有所不同。
如果您想完全关闭自动填充,在直接连接到您的逻辑的字段上添加 autocomplete="off" 可能是明智的。
如果您想获得自动填充行为但更改样式,也许您可以执行以下操作(jQuery
):
$(window).load(function(){
if($('input:-webkit-autofill')){
$('input:-webkit-autofill').each(function(){
//put your conditions here
});
// RE-INITIALIZE VARIABLES HERE IF YOU SET JQUERY OBJECT'S TO VAR FOR FASTER PROCESSING
}});
您是否尝试过使用 onpropertychanged 而不是 onchange 事件?这仅适用于 IE,并且是 MSDN 上推荐的修复程序。
以防万一有人仍在寻找解决方案(就像我今天一样),要收听浏览器自动填充更改,这是我构建的自定义 jquery 方法,只是为了在将更改侦听器添加到输入时简化过程:
$.fn.allchange = function (callback) {
var me = this;
var last = "";
var infunc = function () {
var text = $(me).val();
if (text != last) {
last = text;
callback();
}
setTimeout(infunc, 100);
}
setTimeout(infunc, 100);
};
你可以这样称呼它:
$("#myInput").allchange(function () {
alert("change!");
});
这是一个很好的解决方案,它的功能类似于 jishi 所描述的:
使用 Wayback Machine 链接更新了断开的链接