浏览器(chrome,firefox)jquery .val()不适用于自动填充的输入字段(用户名,密码)

时间:2014-01-16 09:45:13

标签: javascript jquery node.js

仅当长度不为0且用户名和密码不为空时执行此代码才能启用登录按钮,依此类推。这很好用。但是,如果我在浏览器中保存我的登录凭据并访问该网站并看到字段已预先填充,则.val()函数似乎不会返回值。如果我点击任何键,则启用登录按钮。所以函数“初始化登录状态按钮”似乎不起作用。是否可以为jquery显示预填充字段?

希望你理解我^^ 谢谢!

    ready: function() {
        var view = this;
         //setup subViews
        view.setupSubs();
         //Initialize state of login button
        view.onKey();
    },
    "onKey": function(event) {
        var view = this,
            nickname = view.$('#nickname').val(),
            password = view.$('#password').val();

        if (!nickname || !password || nickname.length === 0 || password.length < 8) {
            view.$(':submit').attr('disabled', 'disabled');
        } else {
            view.$(':submit').removeAttr('disabled');
        }
    },

2 个答案:

答案 0 :(得分:5)

<强> N.B。这仅涵盖Chrome。

我最近遇到了类似的水印控件问题。 Chrome中自动填充密码输入的“值”对于javascript显示为空白。我假设这是来自Google的某种安全插件。因此,您无法在javascript中获取值,但您可以测试是否值。

Chrome有一个名为 -webkit-autofill 的CSS选择器优化。您可以使用JQuery进行选择。这给了我们测试:

var hasHiddenValue = view.$('#password:-webkit-autofill').length > 0;

答案 1 :(得分:1)

嗯,有可能通过JavaScript预先填充网站中的字段。 然后你不能用普通事件直接读取它,因为文档在加载后被缓存,并且所有更改都不在此缓存中。

您应该尝试使用在文档的refresed版本上执行的“on”功能。

尝试:

$(document).on( "keyup", "#nickname, #password", function(event) {

});

编辑:

onKey不存在,使用:“keydown”或“keyup”。