моя форма отправки не отправляется в первый раз, но отправляется во второй раз при нажатии кнопки отправки

0

У меня есть форма, в которой я проверяю ее значения с помощью ajax, и если она действительна, то отправьте на другую страницу, вот мой index.js

 $("#form").submit(function(event){
    var thisForm = $(this);
    $(".ajaxLogo").show();
    event.preventDefault();

    // do some stuff

    $.ajax({
        url: '/ajax/Check',
        data: data,
        dataType: 'json',
        success:function(result){
            // ....
            // check some situations that if form is not valid don't send the form
            // ....

            if(result.isOK=='1'){
                alert("I am before this line");
                thisForm.unbind('submit').submit(); // send request to '/'
                alert("I am after that line");
            }
        }
    });
});

Моя проблема возникает при загрузке страницы. В первый раз, когда я нажимаю кнопку отправки, я вижу два alert в браузере, но ничего не происходит (форма не отправляется, а страница не обновляется)! Однако во второй раз, форма отправляет и обновляет страницу. Зачем?

Кроме того, во второй раз я не вижу два alert в браузере.

  • 0
    event.preventDefault (); ??
  • 0
    Я хочу прекратить отправку до тех пор, пока проверка с помощью ajax не будет завершена, затем отправьте ее, затем я должен добавить event.preventDefault(); во первых это неправильно?
Показать ещё 7 комментариев
Теги:
form-submit

1 ответ

0

Я предлагаю, чтобы u сохранял глобальный var isok = '', и если все result.isok = "1", чем donot do e.preventDefault() ;. Его нечеткий способ, но может решить проблему для продолжения отправки формы до тех пор, пока проверка ajax не будет выполнена без серьезных изменений кода.

var isok ='';
$("#form").submit(function(event){
var thisForm = $(this);
$(".ajaxLogo").show();
if(isok != '1')
event.preventDefault();

// do some stuff

$.ajax({
    url: '/ajax/Check',
    data: data,
    dataType: 'json',
    success:function(result){
        // ....
        // check some situations that if form is not valid don't send the form
        // ....

        if(result.isOK=='1'){
             isok='1';
            alert("I am before this line");
            thisForm.unbind('submit').submit(); // send request to '/'
            alert("I am after that line");
        }
    }
});
});
  • 0
    Благодарю. но все равно нужно дважды кликнуть :(
  • 0
    каково значение результата - вы уверены, что его результат result.isOK == '1' в первом клике ... если возможно, предоставьте некоторую демонстрацию jsfiddle.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню