Почему XmlHttpRequest отправляется, хотя ClientValidation не удалось? - PullRequest
0 голосов
/ 12 января 2011

У меня есть много форм AJAX на странице, и при нажатии кнопки мне нужно отправить их все.Обычный ** forms.each (function (index, form) {$ (form) .submit ();} не будет работать для меня, потому что таким образом ТОЛЬКО последняя форма будет в конечном итоге отправлена. Поэтому мне нужно отправить их через$ .ajax (...). Но я хочу разрешить отправку ТОЛЬКО и ТОЛЬКО, если форма VALID

При нажатии «submitForms» вызывается функция «submitTest». Из документации jQuery будет вызываться «submitHandler»если форма VALID. Итак, проверка работает и «submitHandler» НЕ вызывается, если форма «INVALID». НО, XmlHttpRequest отправляется в любом случае, хотя «submitHandler» не вызывается.

Где моя ошибка?Или есть другой способ сделать это? Спасибо

<% using (Ajax.BeginForm("FormPost", "Customer", null, new AjaxOptions() { HttpMethod = "POST" }, new { @class = "form-container" }))
       { %>

            <%: Html.TextAreaFor(m => m.Name, new { width = 440, height = 100 })%>
             <input type="button" value="submitForms" />
    <% }%>


<script type="text/javascript">
function submitTest(){
var forms = $(".form-container");

forms.each(function (index, form) {
    $(form).validate({
         submitHandler: function (form) {
                 $.ajax(
                 { 
                    ....
                 });
         }
    });
});

forms.each(function (index, form) {
     $(form).submit();
});
}
</script>

1 Ответ

0 голосов
/ 12 января 2011

EDITED

Скорее всего, это связано с Ajax.BeginForm, поскольку он устанавливает обработчик onclick и onsubmit. Который, вероятно, запускается раньше, чем ваш обработчик подтверждения отправки.

UPDATE Если вы хотите продолжать использовать форму ajax в модуле, где вы планируете отправить форму через jQuery.ajax, вы можете сделать следующее.

$(function() {
   $('.form-container').removeAttr('onsubmit').removeAttr('onclick');
});

Это удалит обработчики, которые Ajax.BeginForm помещает в тег form. Вам понадобится способ не включать этот скрипт в другой модуль.

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