2012-08-28 8 views
5

jqueryを使用してフォームの検証に妥当性を確認しています。 の代わりにこのオプションを使用して、私は要素 に境界線を追加してい欠落フィールドに要素を追加するerrorPlacementjquery validateとcustom errorPlacementを使用するときのエラーをクリアする方法

$("#signup-form").validate({ 
     submitHandler: function(form) { 
     form.submit(); 
    }, 
    errorPlacement: function(error, element) { 
     element.css("border", "solid 1px red"); 
    }      
}); 

私が把握するように見えることはできません一つのことをするときに有効な、それをクリアする方法ですか?

私は上記のコードから始めました。次に試してみて、私は結果と混同しています。 フィールドが失敗したときにsuccess:オプションがない場合、クラスが正常に追加されます。しかし、私がsuccessオプションを追加するとすぐに、すべての必須フィールドがそのクラスを取得しています。要素を調べると、私は<input class="required invalid valid">と表示されるので、何かを間違って実行しています。

  $("#signup-form").validate({ 
       submitHandler: function(form) { 
        // do other stuff for a valid form 
        //form.submit(); 
       }, 
       errorPlacement: function(error, element) { 
        element.addClass("invalid"); 
       },   
       success: function(error) { 
        // change CSS on your element(s) back to normal 
       },      
       debug:true 
      }); 
+0

通常、デフォルトでは、エラーは自動的にクリアされます。もっと説明してください、そして/またはあなたの問題のデモを見せてください。 – Sparky

+0

私は上記のコードを追加しています。新しい要素を追加すると、欠落しているフィールドの境界を赤に変更するだけです。私は情報を入れて、フィールドを残してもそれはまだ境界を持っています。 – randy

+1

ここで答えを参照することができます:http://stackoverflow.com/questions/3518895/jquery-validation-plugin-callback-for-field-success-validation成功オプションには、ラベルを無効にするために使用できるコールバックがあります境界。 – user1512616

答えて

6

あなたは

success: function(error) { 
    // change CSS on your element(s) back to normal 
} 

これは、提出フォームなしで動的に動作するはずです... .validate()オプションのリストにこれを追加してみてください。エラーが解決するとすぐに、含まれているコードが実行されます。

documentationを参照してください。

jsFiddleを使用して問題のデモを作成してください。ここにはa blank jsFiddle.validate()が含まれており、すぐに使用できます。


EDITOP's jsFiddleあたりとして

、私が作ったこれらの変更...

errorPlacement: function(error, element) { 
     $(element).filter(':not(.valid)').addClass("invalid"); 
    }, 
    success: function(error) { 
     console.log(error); 
     $("#signup-form").find('.valid').removeClass("invalid"); 
    } 

ワーキングデモ:http://jsfiddle.net/u3Td3/6/

サイドノート:もあなたいくつかのHTMLを持っていたues。あなたは、でinput要素を「自己終了」する必要があります。送信ボタンの場合と同じこと、</input>を使用するのではなく、自己閉じます。 HTMLを検証するには、validator.w3.orgを参照してください。また、レイアウトにはtableを使用せず、CSSを使用します。

+0

説明にコメント/詳細なコードを追加 – randy

+0

@randy、私はあなたのHTMLやページを見ることができないので、私は正確な解決策を書くことはできません。 jsFiddleを使用して問題のデモを作成します。ここには、 '.validate()'が既に含まれていて、使用できる状態で[空のjsFiddle](http://jsfiddle.net/jLE2s/)があります。 – Sparky

+0

http://jsfiddle.net/paries/u3Td3/1/ – randy