2014-01-16 95 views
3

只有当长度不为0且用户名和密码不是空等等。这工作正常。但是,如果我将我的登录凭据保存在浏览器中,并且访问网站并查看字段已预填充,则.val()函数似乎不会返回值。如果我按任何键登录按钮启用。所以函数“初始化登录按钮的状态”似乎不起作用。预填充字段是否可见jquery?浏览器(chrome,firefox)jquery.val()不适用于自动填充的输入字段(用户名,密码)

希望你能理解我^^ 谢谢!

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'); 
     } 
    }, 
+1

如果字段是用信息的高速缓存版本完成,因为事件被触发一次和js无法看到的变化会出现这种情况有很多很多的形式。 – Geo

回答

1

那么,预先填写websits中的字段可能是通过JavaScript进行的。 然后,您不能直接阅读这与一个正常的事件,因为文件被加载后,一旦它被加载和所有的变化不在这个缓存里面。

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

尝试:

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

}); 

编辑:

安其不存在,阉使用 “的keydown” 或 “KEYUP”。

+1

自动填充不会触发这个事件,并且生活已经死了 –

+0

@Up:固定它到.on() - 我不知道现场对我来说一直工作得很好 – Steini

+1

但是什么是onKey事件? –

5

N.B.这仅涵盖Chrome。

我最近有一个类似的问题,与水印控制。 Chrome自动填充密码输入的“值”对javascript来说显示为空白。我假设这是来自Google的某种安全插件。所以你不能在javascript中获得值,但你可以测试是否为的值。

Chrome有一个名为-webkit-autofill的CSS选择器细化。您可以使用JQuery选择此选项。这让我们的测试:

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