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 –