密码输入字段长度 = 0 自动填充(android chrome)

Posted

技术标签:

【中文标题】密码输入字段长度 = 0 自动填充(android chrome)【英文标题】:Password input field length = 0 on autofill (android chrome) 【发布时间】:2014-12-11 10:31:06 【问题描述】:

我正在登录页面上的输入字段上运行占位符。在 android (4.3) 上,它会在页面加载时自动填充用户和密码字段。使用 javascript,我可以获得自动填充的用户输入的长度,但是当我在密码输入上运行相同的函数时,它返回 0。

即使当我使用 Chrome 远程调试进行调试时,它也显示密码输入字段是“”,长度 = 0。但 android chrome 在该字段中显示密码。

反正有这个。我只需要检测输入字段何时不为空,以便隐藏占位符。

$(document).ready(function()
    setTimeout(function () 
        alert($("#password").val().length);
        checkPlaceholder("#password");
    , 1000);
);

function checkPlaceholder(x) 
    if($(x).val().length === 0)
        $(x).parent().find(".input_placeholder").removeClass("placeholder_hide");
    
    else 
        $(x).parent().find(".input_placeholder").addClass("placeholder_hide");
    
   

【问题讨论】:

如果您将代码添加到这篇文章中,您会得到更快的结果。 【参考方案1】:

嗯,我有类似的问题。我没有找到任何有关此的信息。但我注意到,在用户点击文档正文后,Android Chrome 会用真实值填充密码字段。在该密码字段生成'change' 事件之后,如果您检查它的值,它将被填充。不幸的是,如果我们触发 'click'/'touch'/'focus' etc. 事件,Chrome 不会以同样的方式工作,只有硬件点击。

所以,我通过在密码字段上添加 'change' 事件的事件侦听器解决了我的问题。对你来说,解决方案可能是这样的:

$(document).ready(function() 
    // leave this code for other browsers
    setTimeout(function () 
        alert($("#password").val().length);
        checkPlaceholder("#password");
    , 1000);
    // android Chrome fix
    $('#password').change(checkPlaceholder.bind(null, '#password'));
);

但是,正如我之前写的,该代码将在用户点击页面后执行。

【讨论】:

同样的问题,但仍然没有解决方案

以上是关于密码输入字段长度 = 0 自动填充(android chrome)的主要内容,如果未能解决你的问题,请参考以下文章

winform中的 datagriview 字段自动填充长度

根据用户输入自动填充文本框

jquery 防止自动填充表单

解决浏览器自动填充form表单账号和密码输入框的问题

如何避免在 Chrome 中的表单中自动填充用户名/密码?

Chrome 自动填充/自动完成密码没有价值