我们的一位用户刚刚提到他们的浏览器Autofill不会导致JS onChange事件触发;这会导致用户注册我们的问题。
这是设计的吗?有办法解决它吗?
答案 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所描述的类似:
使用Wayback Machine链接更新了损坏的链接