MVC3 с использованием jquery.validate.unobtrusive.js и $ ("# form"). Submit () hijax не работает - PullRequest
2 голосов
/ 31 октября 2011

У меня есть базовая форма

@Html.ValidationSummary(true)
using (Html.BeginForm("Index", "Home", FormMethod.Post, new { @class = "form" }))
{
     <div class="editor-label">
         <label for="Name">@Html.LabelFor(model => model.Name)</label>
     </div>
     <div class="editor-field">
         @Html.EditorFor(model => model.Name)
     </div>

и так далее. Моя модель использует аннотации данных, и проверка включена.

Я угоняю форму, используя jquery:

<script type="text/javascript">
    $("form[action='/']").submit(function () {
        $.post($(this).attr("action"), $(this).serialize(), function (response) {
            $("#contactForm").replaceWith($("#contactForm", response));
        });
        return false;
    });
</script>

Это работает, если я правильно ввожу поля и отправляю. Но странно то, что если я ввожу недопустимое значение в одно из полей формы, и код подтверждения укажет на мою ошибку, функция отправки события, которую я добавил в приведенном выше сценарии hijaxing, теряется, и происходит полное сообщение.

Какие-нибудь хорошие идеи относительно того, как мне обойти это?

1 Ответ

3 голосов
/ 31 октября 2011

Я думаю, что когда вы добавляете обработчик отправки в форму, вы перезаписываете обработчик отправки, добавляемый аннотацией проверки jquery / данных.

Чтобы обойти это, вы можете добавить:

var theForm = $(this);
if ( theForm.valid() ) {
    $.post($(this).attr("action"), $(this).serialize(), function (response) {
        $("#contactForm").replaceWith($("#contactForm", response));
    });
    return false;
}

Это позволит убедиться, что форма действительна перед отправкой POST.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...