浏览器自动填充和Javascript触发事件

时间:2011-02-08 20:48:21

标签: javascript autofill

我们的一位用户刚刚提到他们的浏览器Autofill不会导致JS onChange事件触发;这会导致用户注册我们的问题。

这是设计的吗?有办法解决它吗?

5 个答案:

答案 0 :(得分:9)

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

如果您想完全关闭自动填充,最好在直接连接到您的逻辑的字段上添加autocomplete =“off”。

答案 1 :(得分:0)

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

答案 2 :(得分: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!");
});

答案 3 :(得分:0)

如果您想获得自动填充行为但更改样式,也许可以执行以下操作(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 
}});

答案 4 :(得分:-2)

这是一个非常好的解决方案,与jishi所描述的类似:

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

使用Wayback Machine链接更新了损坏的链接