2016-04-02 4 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の両方の方法が満たされます。緑色のダニが表示されます。

問題:

私が必要と、電子メールのいずれかの方法をdissatisfyた場合は、エラーメッセージが自動的に表示されますが、緑色のチェックマークが残ります。 .validate()の後に.valid()を使用して、フォームが有効でないことを確認して緑色のダニを取り除こうとしました。動いていない。

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

フォームが有効でない場合は、DOMを操作するために何かできますか?言い換えれば、私はどのようにこの仕事をすることができますか?

事前のおかげで、

クリストス

+0

成功関数のelse部分では、ticを非表示にしますか? – Rasclatt

+0

私はこれがうまくいくと思います。なぜなら、elseメソッドは、必要なメソッドとemailメソッドが満たされている場合に起動されるリモートメソッドにあるからです。 – christostsang

答えて

0

あなたのバリデータのメッセージ部分では、あなたがremoteであなたのデータと同じように同じことを行います。関数または匿名関数を実行します。