2016-04-08 3 views
0

У меня есть форма, в которой я хочу проверить данные и затем сохранить значения в переменной $ _SESSION перед отправкой формы. Пока мой код возвращает false, если проверка не выполняется, но отправляет форму до завершения AJAX. Я не уверен, как это сделать немного:JQuery/AJAX - Отправить форму после разрешения ajax

$('#c_form').submit(function() { 
    if ($("#del_f").val().length == 0) { 
     $("#del_f").addClass("alert-danger"); 
     $("#del_f").focus(); 
     return false; 
    } else { 
     $("#del_f").removeClass("alert-danger"); 
    } 
    if ($("#del_s").val().length == 0) { 
     $("#del_s").addClass("alert-danger"); 
     $("#del_s").focus(); 
     return false; 
    } else { 
     $("#del_s").removeClass("alert-danger"); 
    } 
    var update_session_delivery = "n=" + $("#del_f").val() + " " + $("#del_s").val(); 
    var ajax1 = $.ajax({ 
     url: 'work/update_session_delivery.php', 
     type: 'post', 
     data: update_session_delivery, 
     success: function(result) {} 
    }); 

    $.when(ajax1).done(
     function() { 
      //submit the form? 
     } 
    ) 
}); 
+1

, как вы сделали это, это не возможно, чтобы делать то, что вы хотите. Вам нужно вызвать '$ ('# c_form'). Submit()' в 'success' части вашего ajax. BTW, вместо 'success' вы должны использовать' .done'. Но это просто вызовет цикл, вы не сможете перехватить подачу формы, задержать ее до завершения ajax и затем продолжить ее отправку. Что вам нужно сделать, это нажать кнопку, которую пользователь должен щелкнуть за пределами формы, чтобы вызвать ajax, а затем вызвать форму submit в части .done' ajax. – Styphon

+0

Отлично. Я понятия не имею, почему я об этом не думал. Спасибо – Lee

+0

Почему вы хотите сделать это? в чем вы нуждаетесь? – itzmukeshy7

ответ

0

попытка e.preventDefault:

$('#c_form').submit(function(e) { 
     e.preventDefault();//prevent form from submiting 
     var form = $(this); 
     if ($("#del_f").val().length == 0) { 
      $("#del_f").addClass("alert-danger"); 
      $("#del_f").focus(); 
      return false; 
     } else { 
      $("#del_f").removeClass("alert-danger"); 
     } 
     if ($("#del_s").val().length == 0) { 
      $("#del_s").addClass("alert-danger"); 
      $("#del_s").focus(); 
      return false; 
     } else { 
      $("#del_s").removeClass("alert-danger"); 
     } 
     var update_session_delivery = "n=" + $("#del_f").val() + " " + $("#del_s").val(); 
     var ajax1 = $.ajax({ 
      url: 'work/update_session_delivery.php', 
      type: 'post', 
      data: update_session_delivery, 
      success: function(result) { 
        //aditional logic here 
       form.submit();//submit the form after success 
      } 
     }); 


    });