1

ASP.net MVC 3 Unobtrusive Client Validations をアプリケーションに実装しようとしたとき、レンダリングされた html は、JQuery によって生成されるスパン タグを生成しませんでした。

次のレンダリング html しか取得できず、JQuery モーダル ポップアップを部分ビューのコンテナーとして使用しました。

<input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" />

ただし、JQuery Modal ポップアップなしで控えめなクライアント検証を使用すると、同じアプリケーションで次のように正しく動作します。

<div class="editor-field">
  <input data-val="true" data-val-required="The City field is required." id="City" name="City" type="text" value="Seattle" />
  <span class="field-validation-valid" data-valmsg-for="City" data-valmsg-replace="true"></span>
</div>

JQuery Modal Popup で控えめなクライアント検証を使用するときに実装する必要があるものはありますか?

JQuery ポップアップ コード

 $(document).ready(function () {
        $('#actionPanelDialogs div').dialog({
            autoOpen: false,
            modal: true,
            width: 700,
            appendToBody: true
        });


        $('#actions a').click(function (event) {
            event.stopPropagation();
            event.preventDefault();
            var link = $(this);
            var action = link.attr('href');
            var dialogDivId = link.attr('rel');

            var dialogDiv = $('#' + dialogDivId);

            $.get(action, null, function (data) {
                dialogDiv.html(data);

                dialogDiv.dialog('open');                

            });
            return false;
        });
 });
4

4 に答える 4

8

DOM に追加された新しい要素の解析を手動でトリガーする必要があります。

jQuery.validator.unobtrusive.parse("#modalPopup"); 

jQuery UI を使用している場合

$( ".selector" ).dialog({
   open: function(event, ui) {
      jQuery.validator.unobtrusive.parse(ui);
   }
});
于 2011-09-30T03:53:01.967 に答える
0

問題を発見し、

次のように、フォーム html を使用してフォーム要素を作成しました。

<form  action="@Url.Action("Create", "Person")" enctype="multipart/form-data" method="post" id="contactForm">

Htmlヘルパーを使用すると、正しく機能しました。

@{using (Html.BeginForm("Create", "Person", new { enctype = "multipart/form-data", id = "contactForm" }))
于 2011-09-30T06:04:57.817 に答える
0

ブートストラップ モーダルを使用している場合は、次のコードを使用します。

$('#myModal').on('shown.bs.modal', function () {
    jQuery.validator.unobtrusive.parse($(this));
})

Josh の根性に感謝します。

于 2013-10-04T06:06:47.827 に答える
0

すべてのアプローチを試してみましたが、これが私にとってうまくいきました:

$(".showModal").click(function () {
            var id = $(this).attr("data-id");
            $("#modal").load("/Controller/Action?id=" + id, function () {
                $("#modal").modal();
                $.validator.unobtrusive.parse($("#modal"));
            })
        });
于 2015-09-16T16:06:55.783 に答える