#jquery #knockout.js #knockout-validation
#jquery #knockout.js #проверка нокаута
Вопрос:
Я использую нокаут 3.2. У меня есть поле, в которое добавляется пользовательское правило нокаута, которое получает свое значение из вызова ajax. Он отлично работал с версией Jquery 2.1. Но когда я обновил версию jquery до 3.0, она почему-то перестала работать. Ниже приведен пример кода.
Проверка по полю
self.ViewModel.Id.extend(
{
idExist:{param:true}
});
Пользовательское правило (вызов ajax выполняется с параметром async:false)
ko.validation.rules.idExist = {
validator:function(id, validate){
var idExist = false;
$.when(
$.ajax())
.then(function(data){
idExist = data;
});
return idExist ;
},
message:"Id not exist"
}
После некоторого анализа я обнаружил, что после обновления jquery валидатор не ожидает вызова ajax для over и напрямую возвращает idExist =false .
Есть идеи? Спасибо.
Комментарии:
1. поместите оператор return в функцию then …
2. Пробовал то же самое, но проблема все еще сохраняется.
Ответ №1:
Проблема была решена путем добавления async: true.PFB обновленный код.
validator:function(id, validate){
var idExist = false;
$.when(
$.ajax())
.then(function(data){
idExist = data;
});
return;
},
message:"Id not exist",
async:true
}