Erforderliche Feldvalidierungen funktionieren nicht in JQuery Popup MVC 4

Lesezeit: 2 Minuten

Erforderliche Feldvalidierungen funktionieren nicht in JQuery Popup MVC 4
BOGEN

Ich habe JQuery-Popups und möchte erforderliche Feldvalidierungen darauf setzen. Dazu habe ich die erforderlichen Attribute im Modell festgelegt und auch die Validierungsnachricht für sie in der Ansicht festgelegt, aber die erforderlichen Feldvalidierungen funktionieren nicht bei Popups. Die erforderliche Feldvalidierung funktioniert gut auf anderen Formularen als JQuery-Popups …. Bitte führen Sie mich, was ich tun soll, um dieses Problem anzugehen … Im Folgenden ist mein Code.

Modell

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

Sicht

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

und das Folgende ist mein Code, um ein JQuery-Popup zu öffnen.

$('#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');
    });

  • Laden Sie das Formular dynamisch im Popup (z. B. mit Ajax?)

    Benutzer3559349

    2. August 2015 um 5:48 Uhr

  • @StephenMuecke Ja, ich benutze Ajax

    – ARC

    2. August 2015 um 5:54 Uhr

  • Sie müssen den Validator neu analysieren. Sie müssen Ihr Skript zeigen, um eine Antwort zu geben (bearbeiten Sie die Frage, um sie einzuschließen).

    Benutzer3559349

    2. August 2015 um 5:55 Uhr


Der Validator wird geparst, wenn die Seite zum ersten Mal geladen wird. Wenn Sie dynamischen Inhalt hinzufügen, müssen Sie den Validator neu analysieren. Ändern Sie Ihr Skript so, dass es nach dem Laden des Inhalts die folgenden Zeilen enthält

$(this).load(actionURL, function (html) {
    // Reparse the validator
    var form = $('form');
    form.data('validator', null);
    $.validator.unobtrusive.parse(form);
    $('form', html).submit(function () {
        ....

Randnotiz: Der von Ihnen gezeigte Code enthält nicht @Html.ValidationMessageFor(m => m.MaterialCode) aber ich nehme an, dass dies enthalten ist.

  • Was ist der Unterschied zwischen diesem JS-Code und diesem? stackoverflow.com/questions/7839453/…

    – markzzz

    23. Juli 2018 um 7:16 Uhr

  • @markzzz, $("form").removeData("validator"); ist im Wesentlichen dasselbe wie form.data('validator', null); in diesem Zusammenhang. Der erste entfernt den zuvor hinzugefügten Validator using .removeData() wo als 2. es einstellt null verwenden .Daten(). Die $("form").removeData("unobtrusiveValidation"); in der anderen Antwort ist nicht wirklich notwendig, weil die $.validator.unobtrusive.parse(form); setzt das sowieso effektiv zurück. (und das erinnert mich daran, dass ich eine Antwort auf eine Ihrer Fragen von vor ein paar Tagen hinzufügen werde 🙂

    Benutzer3559349

    23. Juli 2018 um 10:50 Uhr

866930cookie-checkErforderliche Feldvalidierungen funktionieren nicht in JQuery Popup MVC 4

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy