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

时间:2014-10-16 06:50:03

标签: javascript android jquery google-chrome autofill

我在登录页面上的输入字段上运行占位符。在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 个答案:

答案 0 :(得分:0)

嗯,我有类似的问题。我没有找到任何关于此的信息。但我注意到,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'));
});

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