1
我想使用淘汰赛js扩展器进行自定义验证。这个扩展器只是用来检查输入的输入是否是一个数字。knockoutjs扩展失败后禁用按钮
如果我把它留空,我会得到验证规则Cannot be empty
,我不能按下按钮。如果我输入一个字母,我会得到验证规则Must be a number
,但该按钮仍处于启用状态。 注释掉的代码禁用了按钮,但也改变了CSS,我不认为这是最好的解决方案,因为required
扩展工作正常。
有没有办法来防止数字扩展失败时提交按钮提交?
ko.extenders.numeric = function (target, message) {
target.hasError = ko.observable();
target.validationMessage = ko.observable();
function validate(value) {
if (isNaN(value)) {
target.hasError(true);
target.validationMessage(message);
console.log("This is NaN");
//$('#btnSearch').attr('disabled', 'disabled');
} else {
target.hasError(false);
//$('#btnSearch').removeAttr('disabled');
}
}
target.subscribe(validate);
return target;
}
这是我观察到:
this.accountNumber = ko.observable().extend({ required: { message: "Cannot be empty" }, numeric: "Must be a number" });
使用按钮上的'disable'绑定,并将其绑定到您的扩展器设置的'hasError'。 http://knockoutjs.com/documentation/disable-binding.html –