23

我们的一位用户刚刚提出了这样一个事实:他们的浏览器自动填充不会导致 JS onChange 事件触发;这会导致我们的用户注册出现问题。

这是设计使然吗?有没有办法解决它?

4

5 回答 5

10

我偶尔使用的一种解决方案是检查字段/输入/选择的值是否与其默认值不同。defaultValue 将是最初在标记中的值,而 value 是当前值,也就是选择或输入的值。即使表单是自动填充的,这也可能会有所不同。

如果您想完全关闭自动填充,在直接连接到您的逻辑的字段上添加 autocomplete="off" 可能是明智的。

于 2011-02-08T21:18:21.883 回答
1

如果您想获得自动填充行为但更改样式,也许您可​​以执行以下操作(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 
}});
于 2018-12-12T09:46:23.213 回答
0

您是否尝试过使用 onpropertychanged 而不是 onchange 事件?这仅适用于 IE,并且是 MSDN 上推荐的修复程序。

于 2011-02-08T20:56:27.920 回答
0

以防万一有人仍在寻找解决方案(就像我今天一样),要收听浏览器自动填充更改,这是我构建的自定义 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!");
});
于 2014-08-19T21:15:48.137 回答
-2

这是一个很好的解决方案,它的功能类似于 jishi 所描述的:

https://web.archive.org/web/20131125153914/http://furrybrains.com/2009/01/02/capturing-autofill-as-a-change-event/

使用 Wayback Machine 链接更新了断开的链接

于 2013-02-22T04:21:08.187 回答