Использование jQuery для блокировки перенаправлений форм при отправке до завершения функции - PullRequest
0 голосов
/ 23 сентября 2010

Есть ли способ, с помощью jQuery, заставить форму ждать завершения функции, выполняемой перед отправкой?

У меня есть кнопка отправки в форме с несколькими полями.Мне бы хотелось, чтобы кнопка «Отправить» попала на сервер, чтобы определить, есть ли у текущего пользователя какие-либо элементы в базе данных, и если у них их нет, я бы хотел, чтобы во всплывающем окне подтверждения, чтобы пользователь был в курсе.Если у них уже есть некоторые элементы, я хотел бы пропустить всплывающее окно и отправить их как обычно.

Я использую что-то вроде этого:

$('#done').click(function(event)
{
    $.post(asyncController + "/checkItems", function(response)
            {
                if(response != "true")
                {
                    var test = confirm('Are you sure?');
                    if(test)
                    {
                        //submit
                    } else
                    {
                        event.preventDefaultAction();
                    }
                }
            }
        );
});

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

1 Ответ

2 голосов
/ 23 сентября 2010

Попробуйте следующее. Таким образом, это предотвращает действие отправки по умолчанию события click кнопки submit, затем мы получаем ссылку на элемент формы и отправляем эту форму, если результат вызова ajax и Подтверждение равен true.

    $('#done').click(function(event) {

        //prevent submit
        event.preventDefault();

        //get form reference
        var frm = this.form;

        $.post(asyncController + "/checkItems", function(response) {

            if (response != "true") {

                var test = confirm('Are you sure?');

                if (test) {
                    //submit the form
                    frm.submit();
                } 

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