基本上,我在登录表单上有一个登录按钮,可以与 jQuery 1.8.3(我尝试过 1.9.0)和 Knockout 2.2.1 可观察对象一起正常工作,以及用于启用/禁用登录按钮的绑定。
当计算函数发现缺少用户名或密码时,启用按钮将被禁用。
但是,当 Google Chrome (24.0.1312.56 m) 在页面加载后不久自动填充文本框时,就会出现问题。视图模型和计算的可观察量不会检测 Chrome 何时更新文本框,因此该按钮保持禁用状态。
我做了一个基本的jsfiddle。我不知道如何让 jsfiddle 自动填充来显示这个问题:) 你只需要相信我。
JavaScript/视图模型
$(document).ready(function(e) {
var loginViewModel = function() {
var self=this;
self.loginName = ko.observable("");
self.loginPass = ko.observable("");
self.loginInfoValid = ko.computed(function() {
if (self.loginName().length > 0 && self.loginPass().length > 0) {
return true;
} else {
return false;
}
});
};
ko.applyBindings(new loginViewModel());
});
HTML
<input type="text" data-bind="value: loginName, valueUpdate:'afterkeydown'"><br>
<input type="text" data-bind="value: loginPass, valueUpdate:'afterkeydown'"><br>
<span data-bind="text: loginName"></span><br>
<button data-bind="enable: loginInfoValid">Login</button>
jsfiddle:http://jsfiddle.net/vW6Xy/1/ http://jsfiddle.net/vW6Xy/1/
谢谢你!!
你可以
- bind a
change
事件处理程序到文本对象并手动调用self.loginInfoValid
方法,或
- use
setTimeout
等待一小段时间并手动调用self.loginInfoValid
method.
If the change
当 Chrom 自动填充时会引发事件,这将是我在这两个解决方案中的首选解决方案。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)