我们的一位用户提出,他们浏览器的自动填充功能不会触发JS的onChange事件,这给我们的用户注册造成了问题。
这是设计上的问题吗?有没有办法解决?
我们的一位用户提出,他们浏览器的自动填充功能不会触发JS的onChange事件,这给我们的用户注册造成了问题。
这是设计上的问题吗?有没有办法解决?
我偶尔使用的一种解决方案是检查字段/输入/选择的值是否与其defaultValue不同。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
}});
如果有人仍在寻找解决方案(就像我今天一样),以便监听浏览器的自动填充更改,这里是一个我构建的自定义 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 链接更新了损坏的链接