2016-02-03 2 views
0

У меня есть форма, и я пытаюсь выполнить дистанционную проверку синтаксического анализа в одном из полей, однако при проверке формы форма отправляется до того, как она ждет ответа от удаленная функция (через asyncValidate()). Таким образом, даже если поле недействительно, оно покажет полевую ошибку css, но форма все еще отправляется.Parsley Validation не ждет удаленной проверки AsyncValidate, чтобы закончить

Я пробовал использовать объект $ .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); 
     }); 
}); 

ответ

0

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

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

+0

Вы правы, я не использую последнюю версию ... Я использовал обходной путь в моем контроллере (структура MVC), так что я не пытаюсь выполнить проверку через jQuery. Тем не менее, я буду отмечать этот ответ как правильный. – user3228515

Смежные вопросы