8

私の Razor ビュー (ASP.NET MVC 4) には、いくつかのフィールドを表示/非表示にするための 2 つのラジオボタンがあります。最初のラジオボタンが選択されると、これらのフィールドは非表示になります。2 番目のラジオボタンが選択されると、フィールドが表示されます。これは、ラジオボタンの onclick イベントにバインドされた Javascript 関数によって行われます。

function displayHiddenFields(value) {
  if (value == 'true')
    $('#myDiv').removeClass('hidden');
else
    $('#myDiv').addClass('hidden');
}

ビューモデルでデータ注釈を使用して検証を実行しています。私の問題は、目に見えないフィールドも検証されることです。これらのフィールドは、表示されている場合にのみ検証する必要があります。入力要素の data-val 属性を操作しようとしましたが、うまくいきません。

$('input1').attr('data-val', value);

どうすれば問題を解決できますか? クライアント側の Javascript を使用して非表示のフィールドの検証を無効にする方法はありますか? それ以外の場合は、フィールドを条件付きでレンダリングするためにポストバックを行う必要があります。

4

4 に答える 4

7

ページの下部に次の JavaScript を追加して解決しました。

 <script type="text/javascript">
    $(function () {
        var settings = $.data($('form').get(0), 'validator').settings; 
        settings.ignore = ".hidden";
    });
</script>

このようにして、.hidden クラスが適用されたすべての入力は、クライアント側の検証で無視されます。

于 2012-11-21T13:22:55.397 に答える
2
<button id="Submit" type="submit">Submit</button>
<script type="text/javascript">
    $("#Submit").on("click", function () {
        var validator = $("form").data('validator');
        validator.settings.ignore = "input[type=hidden]";
    });
</script>
于 2013-07-13T08:56:49.943 に答える
1

jQuery検証を使用することをお勧めします。モデルを条件付きで検証できます。

if($("#field").is(":checked")){
//Add some validation here
}else{
//Default validation here
}
if($("form").valid()){
 //Do processing
}

問題はバックエンドにあります。データ注釈を使用している場合は、コントローラーでもモデルを検証していると思います。「Model.isValid()」などのようなものですか? 両方のケース (ラジオ ボタン 1 のクリックまたはボタン 2 のクリック) が常に「有効な」モデルと一致する限り、問題はありません。そうしないと、一部のデータ注釈をオフにする必要がある場合があります。あくまでも私の経験から。 jQuery 検証ドキュメント

于 2012-11-20T14:49:30.360 に答える