2016-02-03 129 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