我正在使用 jquery 在输入上开发占位符文本,当输入获得焦点时,占位符文本会稍微淡出,并在用户键入时完全消失。这部分工作正常。因此,为了避免与保存的文本发生冲突,我将代码包装在:
if(!$($input).val()) { ...create placeholder, set up rules for fading it, etc... }
如果用户保存了密码,例如在 Firefox 中,浏览器将检测到输入有值,然后不会创建占位符文本。
但是,在 Chrome 中,Chrome 直到页面“完成”加载后才会加载保存的值...这意味着它检测到输入为空,创建占位符文本,然后在页面加载后,将保存的值放在输入中 - 导致占位符和密码相互重叠。
如何检测 Chrome 正在填写表单以避免这种不幸的重叠?
最佳答案
最后,我注意到 Chrome 在自动填充时不会触发任何类型的事件,但是如果您等到 window.load 然后检查是否有任何输入具有 -webkit-autofill ,您就可以检查它们。正如你所看到的,我还使用了一个去抖器(Ben Alman - http://benalman.com/projects/jquery-throttle-debounce-plugin/)再等待 200 毫秒,因为即使在 window.load 之后,它有时还没有输入自动填充文本......
$(window).load($.debounce(200, function () {
if ($('input:-webkit-autofill')) {
// We know that this form has autofill on its way. Let's check this again after a delay as its not always done on window.load
$('input:-webkit-autofill').each(function () {
if ($(this).val() !== "") {
$(this).parent().find('label').hide();
}
});
}
}));
关于jquery - 使用 Jquery 检测 Chrome 保存的输入信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7749689/