Dyskretna walidacja jQuery ignoruje klasę „anuluj” na przycisku przesyłania, jeśli jest używana w formularzu Ajax

Próbuję zaimplementować opcjonalne sprawdzanie poprawności po stronie klienta za pomocą

ASP.NET MVC 4,dyskretna walidacja jQuery,dyskretny ajaxTo działa dobrze

Poniższe zdjęcia pokazują, co mam na myśli dzięki opcjonalnej walidacji po stronie klienta: Oczekuje się, że tylko jedno pole w moim formularzu będzie zawierać wiadomości e-mail, więc dołączony jest do niego walidator poczty e-mail.

Teraz klikamy na Zapisz. Ponieważ nasz tekst„name @ doamin” nie jest prawidłowym adresem e-mail, który wyświetla podsumowanie walidacji. Razem z podsumowaniem walidacji nie ujawniamy„Zapisz mimo to” przycisk.

Ten drugi przycisk to zwykły przycisk przesyłaniaclass="cancel". To pouczajQuery.validate.js skrypt pomijający walidację podczas przesyłania za pomocą tego przycisku.

Oto fragment kodu widoku:

@using (Html.BeginForm())
{
    <div>
        <input data-val="true" data-val-email="Uups!" name="emailfield" />
        <span class="field-validation-valid" data-valmsg-for="emailfield" data-valmsg-replace="false">*</span>
    </div>

    <input type="submit" value="Save" />
    @Html.ValidationSummary(false, "Still errors:")
    <div class="validation-summary-valid" data-valmsg-summary="true">
        <input type="submit" value="Save anyway" class="cancel" />
    </div>
}

To wszystko działa dobrze.

Problem

Drugi przycisk przesyłania -„Zapisz mimo to” przestaje działać zgodnie z oczekiwaniami, jeśli przełączę się na formularz Ajax. Po prostu zachowuje się jak normalny i uniemożliwia wysyłanie do momentu, gdy walidacja się powiedzie.

Oto fragment kodu widoku „ajaxified”:

@using (Ajax.BeginForm("Edit", new { id = "0" },
        new AjaxOptions
            {
                HttpMethod = "POST",
                InsertionMode = InsertionMode.Replace,
                UpdateTargetId = "ajaxSection",
            }))
{
    <div>
        <input data-val="true" data-val-email="Uups!" name="emailfield" />
        <span class="field-validation-valid" data-valmsg-for="emailfield" data-valmsg-replace="false">*</span>
    </div>

    <input type="submit" value="Save" />
    @Html.ValidationSummary(false, "Still errors:")
    <div class="validation-summary-valid" data-valmsg-summary="true">
        <input type="submit" value="Save anyway" class="cancel" name="saveAnyway" />
    </div>
}

DebugowałemjQuery.validation.js aby dowiedzieć się, jaka jest różnica, ale nie powiodło się.

Qustion

Wszelkie pomysły na rozwiązanie lub obejście problemu i niech formularz ajax zachowuje się zgodnie z przeznaczeniem.

Uzupełnienie

Miećwalidacja po stronie klienta jest absolutną koniecznością. Sprawdzanie poprawności po stronie serwera nie jest opcją. Oprócz większego ruchu (ta próbka jest uproszczeniem - prawdziwa forma zawiera znacznie więcej pól) i opóźnienia, jest jedna rzecz, której walidacja po stronie serwera nie zrobiłaby: walidatory po stronie klienta podkreślają błędne pola po utracie ostrości. Oznacza to, że masz informację zwrotną, gdy tylko przejdziesz do następnego pola.

questionAnswers(3)

yourAnswerToTheQuestion