9

RequiredAttributeを継承し、IClientValidatableを実装して、クライアントとサーバーの両方でMVCモデルを検証するための独自の条件付き検証属性を作成しました。考え方は、私のモデルの真偽値のプロパティが真であれば、別のプロパティが必要であるということです。図では、これは、テキストボックスを充填する必要があるかどうかを指示するチェックボックスとして現れる邪魔にならないjQuery検証を使用して手動で検証を再検証/トリガする方法はありますか?

をこれは、ユーザが次の操作を行う場合を除いて完全に機能します。チェックボックス(フィールドである

  • チェックを今必要です)。
  • フォームを送信します(クライアント側の検証が実行され、エラーメッセージが表示されます)。
  • ユーザのチェックボックスをオフにします(エラーメッセージは残りますが、フィールドは必要ありません)。

このチェックボックスをオンまたはオフにしたときにフォームの再検証を行いたい場合は、エラーメッセージが表示されなくなるようにフィールドの再検証を行うだけです。私はjQuery validate()メソッドを呼び出すさまざまな組み合わせを試してみましたが、何も検証を再実行することができないようです。

次のjavascriptを使用して、妥当性検査関数とそれに関連付けられた控えめなアダプタを設定します。

$.validator.addMethod(
    "requiredif", 
    function(value, element, parameters) { 
     var selector = "#" + parameters["dependentpropertyname"]; 
     var triggerValue = parameters["triggervalue"].toString().toLowerCase(); 
     var actualValue = $(selector).is(":checked").toString().toLowerCase(); 
     if (actualValue === triggerValue) return $.validator.methods.required.call(this, value, element, parameters); 

     return true; 
    }); 

$.validator.unobtrusive.adapters.add(
    "requiredif", 
    ["dependentpropertyname", "triggervalue"], 
    function(options) { 
     options.rules["requiredif"] = { 
      dependentpropertyname: options.params["dependentpropertyname"], 
      triggervalue: options.params["triggervalue"] 
     }; 
     options.messages["requiredif"] = options.message; 
    } 
); 

ありがとうございます!

答えて

-4

Foolproof Validationをご覧ください。それはあなたがあなた自身を転がすことなくあなたがしようとしていることをします。

+0

リンクをありがとうが、私はまだ同じ問題があります。私。私のフォームの全部または一部に対して、クライアントで検証を再検証/トリガーする方法は? – andrej351

+2

これは質問に答えません。 OPはどのように皮をむいてオレンジ色にするのかを尋ねてきました。代わりにリンゴを食べるべきだと答えると答えました。おそらくコメントかもしれません。 – Liam

13

私は、jquery validateとjquery uiを使ってdatepickerフィールドを再検証したいという同様の問題がありました。 This post私はそれを理解するのを助けた。

キーは、そのセレクタの有効なメソッドにコールバックを追加するだけです。次のようなもの:

$(".requiredif").change(function() { 
    $(this).valid(); 
}) 
関連する問題