2011-10-25 11 views
1

ドロップダウンでオプション1が選択されている場合に空でなければならないフィールド(フィールドA)を持つフォームがありますオプション2が選択されている場合オプション1を選択したときにフィールドAをクリアして無効にするjavascriptがあります。ASP.NET MVC 3:ターゲットフィールドが無効の場合、クライアント側の検証メッセージが後でスティックされる

私はSimon InceのRequiredIf属性をオプション1に依存して、モデルのフィールドAに適用しており、うまくいきます。それは問題ではありません。

  1. ユーザーが選択したオプション2(そのため、フィールドAが必要)とフィールドの空を持っています

    は、ここで問題になるんイベントのシーケンスです。

  2. ユーザーが[保存]をクリックします。検証メッセージは、フィールドAおよび検証サマリーに表示されます。すべては順調です。
  3. オプション1のユーザー変更。フィールドAは無効になります。
  4. ユーザーが[保存]をクリックします。検証メッセージはフィールドAに残りますが、ではなく、が検証要約に表示されます。

私はRequiredIfの検証が動作している(とフィールドAが検証を通過している)が、古い検証メッセージが周囲に付着していることをこのことから結論付けています。私は欲しくない。

これはすべてクライアント側です。

フィールドが無効になっていないと、すべて正常に機能しますが、編集可能ではなく無効にしたいが、「空にする」必要があります。

jsとjQueryを通じてメッセージSPANタグをクリアする以外に、これを修正する方法はありますか?

答えて

1

検証要件が変更されているため、検証を実行させてからすべてのエラーメッセージを更新する必要があります。問題は、次を追加し、ドロップダウンリストで選択した項目の変更に関連しているので:

$("#myDropDown").live("change", function() { // assumes dropdownlist has id of 'myDropDown' 
    $("form").validate().form(); // form() causes error messages to update 
}); 
+0

ありがとうございました。私はそれを試みます。しかし、上記のステップ4で2回目の送信ボタンをクリックしても、検証を再実行する効果はありませんか?私はすでに残っている検証メッセージが消えないことを知っています。 ETA:いいえ、残念ながら、あなたの提案ではメッセージが消えませんでした。それはまだ周囲に固執する。 –

+0

DUH!フィールドAを無効にする前に、検証をやり直すつもりでした!はい、それはそれを世話しました!ありがとうございました! –

関連する問題