2011-06-24 34 views
2

當我打電話$("form").valid()我有一個遠程驗證檢查迷上了(這一切運作良好),但如果其他所有的字段都有效的形式通過了驗證,因爲遠程支票還沒有返回反應「足夠快」。jQuery驗證 - 等待遠程檢查完成

有沒有辦法要麼力jQuery驗證等待完成任何遠程支票或掛接到遠程檢驗呼叫的完整的事件嗎?

我目前使用內置到jQuery驗證框架http://docs.jquery.com/Plugins/Validation/Methods/remote

+0

那麼,有沒有辦法通過jQuery驗證框架自動實現? – monkeylee

回答

2

遠程驗證,您可以添加自定義規則,並在自定義規則可以使Ajax調用。

請檢查SO發佈here用於創建自定義規則。

在該功能使Ajax調用。

3

一個方法是,當遠程調用回來

var remote_complete = false; 

$.ajax({ 
    url: "test.html", 
    success: function(){ 
    remote_complete = true; 
    } 
}); 

while (remote_complete == false) 
    { 
    // loop until remote_complete = true; 
    } 

另一種方法是遠程驗證完成

$.ajax({ 
     url: "test.html", 
     success: function(){ 
     validate_form(); 
     } 
    }); 
+1

小心while循環 - 這可能會導致瀏覽器無響應。 – iblamefish

+1

我寧願後者。如果你真的想採用前一種方法,至少應該使用'setInterval'。 – Tower

+0

雖然沒有setinterval - 壞主意 –

0

好後驗證的形式引入將被設置爲true的變量,如果您已經正確設置所有規則,那麼這不應該是一個問題。請參閱此demo遠程驗證電子郵件,直到檢查返回時驗證不會通過。

您可以張貼的jsfiddle,突出你的問題?

0

http://gloryplus.com/index.php?route=product/product&path=82&product_id=173

rules: { 
     name: { 
     minlength: 2, 
     required: true 
     }, 
     email: { 
     required: true, 
     email: true 
     }, 
     subject: { 
     minlength: 2, 
     required: true 
     }, 
     message: { 
     minlength: 2, 
     required: true 
     } 
    }, 
    highlight: function(label) { 
     $(label).closest('.control-group').addClass('error'); 
    }, 
    success: function(label) { 
     label 
      .text('OK!').addClass('valid') 
      .closest('.control-group').addClass('success'); 
    }