Как я могу остановить обработку / отправку формы с использованием JQuery AJAX? - PullRequest
0 голосов
/ 11 декабря 2010

У меня есть форма с двумя кнопками, кнопкой отправки и кнопкой отмены / закрытия.Когда пользователь нажимает кнопку «Отправить», введенные данные проверяются с использованием http://www.position -absolute.com / articles / jquery-form-validator-потому-form-validation-is-a-mess / .Если все подтверждается, форма отправляется с помощью jQuery / AJAX.Это все работает отлично и денди.У меня проблемы с кнопкой отмены.Я хочу, чтобы кнопка отмены требовала подтверждения.Если пользователь выбирает продолжить, они переходят на страницу по моему выбору.Если они решат, что не хотят отменять, то их просто оставляют на странице.Это последняя часть, которая не работает.

Мой код формы выглядит следующим образом:

<form name="createPage" id="createPage" method="post" action="pager.php" class="ajax updateForm">
 <input name="whatever" type="text" />
            <button type="submit" id="submitQuickSave" class="submitSave"><span>save</span></button>
            <button type="submit" id="submitCancel" class="submitClose" onclick='confirm_close()'><span>close</span></button>
</form>

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

function confirm_close()
{
var r=confirm("All changes since your last save operation will be discarded.");
if (r==true)
  {
    $(".ajax").unbind("submit");
  }
else
  {

  }
}

Я не могу понять, что ввести в аргумент 'else'.Случается так, что если пользователи отменяют отмену (т. Е. Возвращают false), то форма все еще пытается отправить.Я не могу остановить это.Я пробовал несколько вещей с этого сайта и другие безуспешно:
event.stopImmediatePropogation
.abort ()

Есть идеи?В принципе, как мне заставить работать кнопку отмены / закрытия?

Ответы [ 2 ]

3 голосов
/ 11 декабря 2010

Рассмотрим отделение вашего JavaScript от вашего HTML .Имея это в виду, вы можете написать обработчик для вашего события click, которое вы пытаетесь перехватить, следующим образом:

$("button#cancel").click(function($event) {
    var r = confirm("All changes since your last save operation will be discarded.");
    if (r) {
        $(".ajax").unbind("submit");
    }
    else {
        $event.preventDefault();
    }
});

Вы должны настроить свой HTML и добавить атрибут id в *Кнопка 1007 *:

<button id="cancel" type="submit" value="cancel">Cancel</button>

Пример здесь: http://jsfiddle.net/wvFDy/

Надеюсь, это поможет!

0 голосов
/ 11 декабря 2010

Я верю, что вы просто

return false;

Дайте мне знать, если это работает.

...