猿问

JQuery弹出MVC 4中不起作用的必要字段验证

JQuery弹出MVC 4中不起作用的必要字段验证

我有JQuery弹出窗口,我希望在其上设置必需的字段验证,为此,我在模型中设置了必需的属性,并在视图中为它们设置了验证消息,但所需的字段验证并不适用于弹出窗口。所需的字段验证在JQuery弹出窗口以外的表单上运行良好.请指导我该如何处理此问题.以下是我的代码。

模型

[Display(Name = "Material Code")][Required(ErrorMessage = "*")]public string MaterialCode { get; set; }

视点

<li>
    @Html.LabelFor(m => m.MaterialCode)
    @Html.TextBoxFor(m => m.MaterialCode)
    @Html.HiddenFor(m => m.MaterialCodeId)</li>

下面是我打开JQuery弹出窗口的cod。

$('#btnAddCharge').on('click', function (event) {  
        event.preventDefault();
        var actionURL = '@Url.Action("Edit", "Charges", new { Id = 0, @ticketId = @TicketId, UserId = UserId })';

        $(dialogBox).dialog({
            autoOpen: false,
            resizable: false,
            title: 'Edit',
            modal: true,
            show: "blind",
            width: 'auto',
            hide: "blind",
            open: function (event, ui) {
                $(this).load(actionURL, function (html) {
                    $('form', html).submit(function () {
                        $.ajax({
                            url: this.action,
                            type: this.method,
                            data: $(this).serialize(),
                            success: function (res) {
                                if (res.success) {
                                    $(dialogBox).dialog('close');
                                }
                            }
                        });
                        return false;
                    });
                });
            }
        });

        $(dialogBox).dialog('open');
    });


婷婷同学_
浏览 422回答 2
2回答

侃侃尔雅

验证器在最初加载页面时被解析。添加动态内容时,需要对验证器进行修复。在加载内容后修改脚本以包括以下行$(this).load(actionURL,&nbsp;function&nbsp;(html)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;Reparse&nbsp;the&nbsp;validator &nbsp;&nbsp;&nbsp;&nbsp;var&nbsp;form&nbsp;=&nbsp;$('form'); &nbsp;&nbsp;&nbsp;&nbsp;form.data('validator',&nbsp;null); &nbsp;&nbsp;&nbsp;&nbsp;$.validator.unobtrusive.parse(form); &nbsp;&nbsp;&nbsp;&nbsp;$('form',&nbsp;html).submit(function&nbsp;()&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;....附带注意:您所显示的代码不包括@Html.ValidationMessageFor(m => m.MaterialCode)但我想这包括在内。

红糖糍粑

$("form").removeData("validator");本质上与form.data('validator', null);在这方面。第一种方法将删除先前添加的验证器。.emoveData()当第二把它设置到null使用.Data()..这个$("form").removeData("unobtrusiveValidation");在另一个答案中,实际上没有必要,因为$.validator.unobtrusive.parse(form);不管怎么说,这实际上是重新设置的。(这提醒我,我要对你几天前的一个问题补充一个答案:)&nbsp;
随时随地看视频慕课网APP
我要回答