2012-02-11 16 views
1

MVC3サイトを作成しています.JQueryの邪魔な検証を使用してフォームを検証しています。私はフォームフィールドをクリックするたびにちょっとした "ヘルプ"ポップアップを表示するフォームフレームワークをアプリケーション内に構築しました。その地域ではすべてが機能し、私はそれに満足しています。jQueryの邪魔にならない検証が行われたときのコンテンツの非表示

問題は、各フォームのほかに表示されるフォームフィールド検証メッセージに使用できる不動産があまりなく、フォームフィールドの下に表示すると、サイズ変更が醜いことです。

Standard form field

フィールドにIをクリックすると、以下のようになります:

Form field with help text shown

と検証が発生したときに、次のことが起こる:

ここでは代表的なフォームフィールドは次のようになります。

Form field with validation shown

私の解決方法は、単純に非表示にすることです(私はそうするために共有関数を使用します、それを "hideDescriptions()"と呼ぶ)。サイト内のすべてのフォームは同じフレームワークを使用していますので、控えめな検証が行われるたびに、いつでもhideDescriptions()を呼び出せるようにしたいと考えています。

私のjavascriptのは、例えば、ファイルの数にして分割されます。

/レビューは、/ /作成 - /レビュー/読み取り/ createReview.jsを使用しています - readReview.jsを使用しています

どちらも「shared.js」が含まれます。私は、jqueryの邪魔にならない検証プラグインをshared.jsファイルに拡張して、サイト内のすべてのフォームに一度に適用できることを期待していましたが、少し失われています。これまでのところ、私が得た限りです:

$("form").validate({ 
    invalidHandler: function (form, validator) { 
     hideDescriptions(); 
    } 
}); 

しかし私はそれがうまくいかないことを認識しています。私は、邪魔にならないバリデーターがデフォルトですべてのフォームにバリデーターを添付していると見なします。

フォームが有効でない場合に一般的なコールバックを実行するための控えめな検証を拡張する方法はありますか?彼らは何をすべきかにはより多くの助けがないので、人々は、ミスを犯したときの説明を非表示に

+0

をFYI方法を再評価します -

リチャードも有効なポイントを調達していますか? http://stackoverflow.com/questions/4747017/how-to-add-a-handlesubmit-function-when-using-jquery-unobtrusive-validation – Spikeh

答えて

2

これを書いて20分を費やした後、私はこの問題をかなり解決したlinkを見つけました。私が使用したコードは次のとおりです。

$("form").bind("invalid-form.validate", function() { 
    hideDescriptions(); 
}); 

しかし、ユーザーがフィールドを再度クリックすると、説明が表示されます。私はこのリンクを発見した(とinvalidHandlerでsubmitHandlerを置き換え)、発砲していないようだ - 私は私のフォームが動作:)

1

あなたは、エラーのラベルの場所を指定することができ

、あなたは可能性..非常に論理的なようではありません。たとえば、エラーラベルを入力フィールドのタイトルの横に置き、その間にダッシュを入れます。そのように記述すると、重複しません。

+0

あなたは正しいですか?私の回答によれば、それはもっと作成されただけですとにかく問題!検証エラーをどのように出力しているかを調べる必要があります。 残念ながら、表示テキストの近くに検証メッセージを置くことはできません。フィールドの中には、かなり長い説明があるものがあります。私は弾を噛んで下に置く必要があります:|それは、1日の終わりにわずかなCSSの変更です。 – Spikeh

+0

それはちょうど '普通の' jQueryのプラグインの検証ですか?ここで 'errorPlacement'を見てくださいhttp://docs.jquery.com/Plugins/Validation/validate – Richard

+0

いずれかの方法で、エラーがあると入力フィールドのスタイルが変更されていることを確認してください。要素に「エラー」クラスを追加する必要があります。赤い枠線 – Richard

関連する問題