Моя пользовательская проверка будет проверять, является ли почтовый индекс, введенный в поле формы, действительным для состояния, выбранного из выпадающего списка в предыдущем поле. Он отлично работает, когда я сначала выбираю состояние, а затем вводим допустимый/недопустимый почтовый индекс. Однако, если он проверяет, а затем я выбираю другое состояние, сообщение об ошибке проверки не запускается. Может ли кто-нибудь сказать мне, что мне не хватает, и почему он не повторяет проверку?Нестандартная проверка нокаута с проблемой вызова AJAX
Пользовательские проверки:
ko.validation.rules["isValidZipCode"] =
{
async: true,
getValue: function (o) {
return (typeof o === 'function' ? o() : o);
},
validator: function (val, fields, callBack) {
var self = this;
var anyOne = ko.utils.arrayFirst(fields, function (field) {
var val = self.getValue(field);
if (val === undefined || val === null)
return "";
return true;
});
var ajaxData = { state: anyOne, zipCode: val }
$.ajax({
url: $("a#ValidateZipByState").attr("href"),
type: "POST",
data: ajaxData,
success: function (isValid) {
if (isValid) {
callBack(true);
} else {
callBack(false);
}
},
error: handleSubmitError
});
return;
},
message: "Invalid zip code for this state"
};
ViewModel:
self.State = ko.observable(model.State).extend({ required: true });
self.ZipCode = ko.observable(model.ZipCode).extend({ required: true, pattern: /^[0-9]{5}(?:-[0-9]{4})?$/g, isValidZipCode: [self.State, self.ZipCode] });
Спасибо Рафаэлю. Я собираюсь попробовать это прямо сейчас, и я дам вам знать, как это происходит! я ценю помощь .... –