2012-03-04 9 views
3

"invalidHandler"オプションを使用して共通の検証メッセージ(「ページにエラーがあります」)を作成しました。 今、すべてのフィールドが有効になったときにこのメッセージを削除する方法を探しています(離脱制御時)。jQueryの検証 - 一般的なメッセージを削除する方法

+0

あなたの問題は何ですか?要素を削除する方法や、すべてのフィールドが有効かどうかを検出する方法がわからないことはありますか? –

+0

問題は、すべてのフィールドが有効になったときに何がトリガーされるのかわかりません。 – Paul

答えて

5

を使用すると、これを行う1つの方法ですが、errorContainerオプションを使用すると、jQueryの検証によってメッセージが隠されて表示されます。たとえば、次のように

HTML:

<form id="test"> 
    <label for="name">Name</label> 
    <input id="name" type="text" name="name" class="required"/> 

    <label for="age">Age</label> 
    <input id="age" type="text" name="age" class="required"/> 

    <input type="submit" /> 
</form> 

<div id="invalid">You have errors the on page</div>​ 

CSS

#invalid { display: none; } 

はJavaScript:

$("#test").validate({ 
    errorContainer: "#invalid" 
}); 

例:http://jsfiddle.net/andrewwhitaker/deArQ/

+1

このソリューションは問題を解決しますが、すべての検証が完了した後でのみ起動されるイベントがあるかどうかは疑問です。 – DanC

+0

もちろん、 'submitHandler'を試してください。 –

+1

Hmmm、はい、いいえ、submitHandlerはフォームが送信を試みるときに起動します。しかし、フィールドは「変更時」に検証され、submitHandlerが実行される前にすべてのフィールドが正常に検証される可能性があります。それは、私たちが探しているイベントです:errorContainerが隠されたときにトリガーするものです。 – DanC

0

invalidHandlerオプションは、自動的にエラーを追加および削除する内部プラグインエラー処理を実行します。オプションでメッセージを設定するだけであれば、オプションを削除する方がよいでしょう。

プラグインは、ある程度、それはあなたがinvalidHandlerの求めているものに依存していることをとても柔軟性があり、行動のあなたが欲しいあなたの検証プロセスから

あなたはこのよう

$.validator.messages.required='My Required message'; 
デフォルトメッセージを上書きすることができます
+0

"必須"のケースについてのみではありませんか? 「必須」ルール、その他の組み込みルール、カスタムルールの一般的なメサージはどうですか?フィールド上をタブで移動するとinvalidHandlerが呼び出されません。 – Paul

+0

私が示したことは、オプションで決して設定しないと、 "必須"のデフォルトを変更することです。ほとんどの人は "メッセージ"オプションを使用してメッセージを設定します。 – charlietfl

+0

元の投稿に編集できるコードを見ずにはるかに多くの情報を提供することは非常に難しい – charlietfl

関連する問題