2016-04-02 145 views
0

我有一個關於jQuery驗證插件和具體遠程方法的問題。jQuery驗證:遠程方法

說我有一個checkEmail.php腳本,用於檢查數據庫的電子郵件地址。我也使用required:trueemail:true。我想在從服務器獲取響應的同時添加微調器,並在完成時隱藏它。

與此同時,如果服務器的結果是true,我想在電子郵件字段旁邊顯示綠色的勾號圖標。

我用下面的代碼:

$('#form').validate({ 

    rules: { 

     email: { 
      required: true, 
      email: true, 
      remote: { 
       url: 'js/ajax/checkEmail.php', 
       type: 'POST', 
       data: { 
        email: function() { 
         return $('#email').val(); 
        } 
       }, 
       beforeSend: function() { 

        //CODE TO SHOW THE SPINNER 
       }, 
       success:function(output){ 

        //CODE TO HIDE THE SPINNER 


        if(output == 'true') 
        { 
         //SHOW GREEN TICK 

        } 
        else 
        { 
         //SHOWS THE CUSTOM ERROR FROM SERVER 
        } 

       } 
      } 
     } 
    }, 
    messages: { 

     email: { 
      required: 'Please enter your email', 
      email: 'Please enter a valid email address' 
     } 
    } 
}); 

下面要說的電子郵件地址[email protected]是在數據庫中。遠程方法將返回true。同時滿足了requiredemail兩種方法。所以會顯示綠色的勾號。

問題:

如果我不滿意的需要,電子郵件的方法之一,那麼將自動顯示錯誤信息,但綠色的勾將保持不變。我試圖在.validate()之後使用.valid()來檢查表單何時無效,然後刪除綠色勾號。它不工作。

if($('#form').valid()) 
{ 
    //REMOVE GREEN TICK : --> NOT WORKING 
} 

有什麼我可以做的操縱DOM如果表單無效?換句話說,我該如何做這項工作?

由於提前,

克里斯托

+0

在成功函數的else部分隱藏tic? – Rasclatt

+0

我不認爲這會起作用,因爲else部分是在遠程方法中被激活,如果滿足所需的和電子郵件方法。 – christostsang

回答

0

在你驗證的消息部分,如做你在remote您的數據也一樣。做一個函數或一個匿名函數:

function resetCheck(message) 
    { 
     // Whatever code you want to use to remove check icon here 
     $("#checkmark").remove(); 
     // Just return the message 
     return message; 
    } 

// Messages part of your validation: 
... 
messages: { 
     email: { 
      required: resetCheck('Please enter your email'), 
      email: resetCheck('Please enter a valid email address') 
     } 
    }