Проверка Parsley не ожидает завершения удаленной проверки 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);
        });
});

person user3228515    schedule 03.02.2016    source источник


Ответы (1)


Трудно сказать, нужен ли вам вообще addAsynchValidator (ваш код возвращает целое число, он должен возвращать true или false). Если вы это сделаете, вы должны позвонить window.Parsley.addAsyncValidator (как вам сказано в предупреждении). Остальной код не должен быть нужен.

Я предполагаю, что вы используете последнюю версию.

person Marc-André Lafortune    schedule 03.02.2016
comment
Вы правы, я не использую последнюю версию... Я использовал обходной путь в своем контроллере (структура MVC), чтобы не пытаться выполнить проверку через jQuery. Тем не менее, я отмечу этот ответ как правильный. - person user3228515; 04.02.2016