2013-05-13 2 views
0

У меня есть форма с довольно простым фрагментом проверки, а также простой вызов AJAX, за исключением случаев, когда я пытаюсь соединить эти два вопроса. Я столкнулся с проблемами. Если я поставлю фрагмент проверки перед вызовом AJAX , то проверка выполняется, но вызов AJAX просто не отправляется. Если я поставил вызов AJAX перед проверкой, работает AJAX-вызов, а проверка - нет. Я действительно потерялся и стучал головой в течение часов над . Любая помощь очень ценится!Проверка jQuery, противоречащая вызову AJAX

$("#headerForm").submit(function(){ 

    var validate = true;  
    $("#headerForm :input").each(function(){     
     var $this = $(this);       
     if(this.id == "phoneNumber" && $this.val().length < 10){  
      alert("Please enter a valid phone number"); 
      validate = false; 
      return false;   
     } else if(!this.value.length){   
      alert("field is required"); 
      validate = false; 
      return false; 
     }   
    }); 
    return validate; 

var name = $("#name").val(); 
    var phone = $("#phone").val(); 

    var dataString = 'name='+ name + '&phone=' + phone; 

    $.ajax({ 
     type: "POST", 
     url: "/bin/headerForm", 
     data: dataString, 
     success: function() { 
     $('#headerForm').html("<div id='message'>Thank you</div>"); 
     } 
    }); 
    return false; 
}); 
+4

Ничего после 'возвращения Validate 'выполняется. Кроме того, 'validate! = Valid' –

+0

спасибо за ответ @kevinb, но были ли я поставить ** return validate ** для запуска проверки? Если я удалю его или переместил его ниже вызова ajax, я просто получаю одно предупреждение (не 2) и , он автоматически отправляется, не позволяя мне вернуться и ввести что-либо. бит новичка, так что код примеров был бы потрясающим! Постскриптум Извините, ошибка в обновленном мной коде действительна для проверки. –

ответ

2

Лучше всего было бы, чтобы переместить код проверки в функцию, а затем вызвать его представить обработчик:

function validateForm() { 
    var validate = true; 
    $("#headerForm :input").each(function() { 
     var $this = $(this); 
     if (this.id == "phoneNumber" && $this.val().length < 10) { 
      alert("Please enter a valid phone number"); 
      validate = false; 
      return false; 
     } else if (!this.value.length) { 
      alert("field is required"); 
      validate = false; 
      return false; 
     } 
    }); 
    return validate; 
} 

Затем представить обработчик:

$("#headerForm").submit(function() { 

    if (validateForm()) { 
     var name = $("#name").val(); 
     var phone = $("#phone").val(); 

     var dataString = 'name=' + name + '&phone=' + phone; 

     $.ajax({ 
      type: "POST", 
      url: "/bin/headerForm", 
      data: dataString, 
      success: function() { 
       $('#headerForm').html("<div id='message'>Thank you</div>"); 
      } 
     }); 
    } 
    return false; 
}); 
+0

работает отлично! спасибо @Kerem –

Смежные вопросы