Проверка петрушки не дожидается завершения AsyncValidate удаленной проверки
У меня есть форма, и я пытаюсь выполнить удаленную проверку петрушки по одному из полей, однако при проверке формы форма отправляется до того, как она ожидает ответа от удаленной функции (через asyncValidate()). Таким образом, даже если поле недопустимо, оно покажет ошибку поля css, но форма все еще отправляет.
Я пытался использовать объект $.Deferrede, но это не работает.
function add_remote_validation() {
var form = card.el.find('form');
$(form).parsley().addAsyncValidator('validate_function', function (xhr) {
return parseInt(xhr.responseText);
});
}
add_remote_validation();
card.cards['my_card1'].on('validate', function(card){
add_remote_validation();
var result = $.Deferred();
// test any asyncronous validation before doing regular validation
$(form).parsley().asyncValidate()
.done(function(){
var valid = $(form).parsley().validate();
if(valid) {
result.resolveWith(valid);
} else {
result.rejectWith(valid);
}
})
.fail(function(){
result.rejectWith(false);
});
});
1 ответ
Решение
Трудно сказать, если вам нужно addAsynchValidator
вообще (ваш код возвращает целое число, он должен вернуть true
или же false
). Если вы это сделаете, вы должны позвонить window.Parsley.addAsyncValidator
(как вам сказали в предупреждении). Остальной код не должен быть нужен.
Я предполагаю, что вы используете последнюю версию.