首页 文章

使用Jquery检测Chrome保存的输入信息?

提问于
浏览
2

我正在使用jquery在输入上开发占位符文本,当输入获得焦点时会稍微消失,并在用户输入时完全消失 . 这部分工作正常 . 因此,为了避免与保存的文本冲突,我将代码包装在:

if(!$($input).val()) {

...create placeholder, set up rules for fading it, etc...

}

例如,如果用户具有已保存的密码,则在Firefox中,浏览器将检测到输入具有值,然后不创建占位符文本 .

但是,在Chrome中,Chrome在页面“完成”加载后才会加载保存的值...这意味着它会检测到输入为空,创建占位符文本,然后在加载页面后放置已保存的内容输入中的值 - 导致占位符和密码在彼此之上 .

如何检测Chrome填写表单以避免这种不幸的重叠?

1 回答

  • 2

    最后,我注意到Chrome在自动填充时不会触发任何类型的事件,但是如果你等到window.load,然后检查是否有任何输入有-webkit-autofill,那么你可以检查它们 . 你可以看到我也在使用debouncer(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();
                   }
    
               });
    
           }
    
        }));
    

相关问题