2016-02-03 67 views
0

我有一个表单,我试图对其中一个字段进行香菜远程验证,但是,在表单验证时,表单在它等待来自远程函数(通过asyncValidate())。因此,即使字段无效,它也会显示字段错误css,但表单仍然提交。欧芹验证不等待远程验证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在所有(你的代码返回一个整数,它应该返回truefalse)。如果你这样做,你应该打电话window.Parsley.addAsyncValidator(正如你在告诉警告)。其余的代码不应该被需要。

我假设您使用的是最新版本。

+0

你说得对,我没有使用最新版本...我在我的控制器(MVC结构)中使用了一种解决方法,以便我不试图通过jQuery进行验证。尽管如此,我会将这个答案标记为正确的。 – user3228515