Отложенный submit формы на jquery

verfaa

Профессор
Регистрация
29 Янв 2007
Сообщения
416
Реакции
49
Есть форма логина
Код:
<form name="authForm" method="POST" id="auth" action="auth.php">
<input type="text" id="login_pole1" value="" name="login" />
<input type="password" id="login_pole2" value="" name="pass" />
<input type="submit" class="medium" value="Go!" />
</form>

Нужно написать скрипт на jquery, который при сабмите формы отправлял ajax запрос и в зависимости от ответа отправлял или не отправлял форму. Пытаюсь использовать для этих целей e.preventDefault(); но он отказывается работать, вот так выглядит мой скрипт.

Код:
$('form[name=authForm]').bind('submit', function(e) {
        var login_lg = $('#login_pole1').val();

        if(login_lg.match(/^\+?\d{8,14}$/)){ // Если передан номер мобильного телефона

            $.ajax("/ajax/val_phone.php", {
                cache: false,
                data: {
                    "phone_num": login_lg
                },
                dataType: "json",
                success: function(fdt){

                    // Номер телефона не подтвержден - предотвращаем сабмит формы и выводим алерт
                    if(fdt.otvet == 0){
                        e.preventDefault(); // Не работает когда условие выполняется.
                        alert("phone not confirmed");
                    }
                },
                error: function(){ alert('ajax error...'); },
                type: "GET",
                proccessData: false
            });
        }
    });

// Если e.preventDefault(); выше не сработал форма сабмитится и обрабатываем данные ...
 
Есть форма логина
Код:
<form name="authForm" method="POST" id="auth" action="auth.php">
<input type="text" id="login_pole1" value="" name="login" />
<input type="password" id="login_pole2" value="" name="pass" />
<input type="submit" class="medium" value="Go!" />
</form>

Нужно написать скрипт на jquery, который при сабмите формы отправлял ajax запрос и в зависимости от ответа отправлял или не отправлял форму. Пытаюсь использовать для этих целей e.preventDefault(); но он отказывается работать, вот так выглядит мой скрипт.

Код:
$('form[name=authForm]').bind('submit', function(e) {
        var login_lg = $('#login_pole1').val();

        if(login_lg.match(/^\+?\d{8,14}$/)){ // Если передан номер мобильного телефона

            $.ajax("/ajax/val_phone.php", {
                cache: false,
                data: {
                    "phone_num": login_lg
                },
                dataType: "json",
                success: function(fdt){

                    // Номер телефона не подтвержден - предотвращаем сабмит формы и выводим алерт
                    if(fdt.otvet == 0){
                        e.preventDefault(); // Не работает когда условие выполняется.
                        alert("phone not confirmed");
                    }
                },
                error: function(){ alert('ajax error...'); },
                type: "GET",
                proccessData: false
            });
        }
    });

// Если e.preventDefault(); выше не сработал форма сабмитится и обрабатываем данные ...
Посмотрите пожалуйста.
Для просмотра ссылки Войди или Зарегистрируйся
ok = 1 успешный ajax, false это неуспешно.
Можно ещё $('form').off('submit');
для того чтоб отрубить форму.
 
а что выводится в консоли, перед
e.preventDefault();
дописать console.log(e);
 
Код:
e.preventDefault();
вставьте в самый верх функции, а при нужных условиях делайте отправку формы так:
Код:
$('form[name=authForm]').submit();
и делать отладку будет легко и просто
 
А не проще return false; использовать
 
ну так а разве не это нужно
Код:
$('form[name=authForm]').bind('submit', function(e) {
        var login_lg = $('#login_pole1').val();

        if(login_lg.match(/^\+?\d{8,14}$/)){ // Если передан номер мобильного телефона

            $.ajax("/ajax/val_phone.php", {
                cache: false,
                data: {
                    "phone_num": login_lg
                },
                type: "GET",
                dataType: "json",
                proccessData: false,
                success: function(fdt){

                    // Номер телефона не подтвержден - предотвращаем сабмит формы и выводим алерт
                    if(fdt.otvet == 0){
                       
                        alert("phone not confirmed");
                        return false;
                    }
                },
                error: function(){ alert('ajax error...'); },
               
               
            });
        }
    });
 
Последнее редактирование:
Давно отказался от поддержки ие меньше 9
 
Назад
Сверху