我想在绑定到的淘汰可观察对象上执行一个事件input
。当控件失去焦点时,即使没有输入任何内容,也应该执行此函数。我尝试更改事件绑定,但当用户离开控件而不输入任何内容时,它不会触发。我尝试了 mouseout 事件,但只有当用户在失去焦点后单击表单中的其他位置时才会触发 - 这不完全是我想要的。我希望一旦焦点离开控件,即使使用选项卡,偶数也会触发。
以下是我用于 mouseout 事件的代码:
<input
type="text"
id="txtFirstName"
tabindex="1"
maxlength="25"
class="txtbox"
style="width: 200px;"
data-bind="value: FirstName,
attr: {title: FirstNameErrorMessage },
css: {validationFailed: !IsValidFirstName() },
event: {mouseout: ValidateFirstName}"
/>
this.ValidateFirstName = function () {
self.IsValidFirstName(true);
self.FirstNameErrorMessage('');
if (self.FirstName() == '') {
self.IsValidFirstName(false);
self.FirstNameErrorMessage('First Name is required');
}
}
有人可以帮忙吗?
我认为您可以使用几种方法。一个不错的选择是使用 KOhasfocus
捆绑:http://knockoutjs.com/documentation/hasfocus-binding.html http://knockoutjs.com/documentation/hasfocus-binding.html.
您可以绑定布尔可观察量,然后订阅它。在订阅中,您可以选择仅在值为 false 时做出反应。
就像是:
self.FirstName = ko.observable();
self.FirstName.focused = ko.observable();
self.FirstName.focused.subscribe(function(newValue) {
if (!newValue) {
//do validation logic here and set any validation observables as necessary
}
});
像这样绑定它:
data-bind="value: FirstName, hasfocus: FirstName.focused"
我认为,如果您希望每次用户离开该字段时触发它,无论他们如何离开它,也无论是否实际进行了更改,这将是一个不错的选择。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)