2015-09-29 53 views
0

我正在嘗試使表單在提交之前需要某些事情纔是真實的。運行與阿賈克斯這裏有些問題..在AJAX之前阻止默認,表單仍然提交成功

$('form').submit(function(event){ 
    form = $(this); // I've tried just: this. Same result 
    material = $('#material'). val(); 
    hours = $('#hours'). val(); 

    // - Material and Hours are numbers 
    if(isNaN(material)) { 
     event.preventDefault(); 
     alert('Please enter a number for Material'); 
    } 
    if(isNaN(hours)) { 
     event.preventDefault(); 
     alert('Please enter a number for Hours'); 
    } 


    event.preventDefault(); 
    $.ajax({ 
     url : 'page.php', 
     data : { 
      'id' : {{ id }} 
     }, 
     type : 'post', 
     dataType: "json", 
     success : function(data){ 
      console.log(data); 
      if(data.job_num == {{ job_id }}) { 
       form.submit(); 
      } else { 
       alert('Please enter a valid number'); 
      } 
     }, 
     error: function(){ 
      alert('Please enter a valid number');      
     } 
    }); 

}); 

正如你所看到的,hours可能是NaN和窗體不會提交..但是當它到達了ajax,如果它是成功的,表單將提交即使hours仍然NaN ..

我試圖把阿賈克斯if陳述,相同的結果之前..不知道這是一些簡單的我俯瞰,或者如果它真的這個複雜..

+1

把'return;'出錯後'alert()' – DontVoteMeDown

+0

當然是那麼簡單..非常感謝!如果你想使它成爲答案,我會接受 – sudo

回答

1

放一個return;之後你錯誤alert()它會結束事件功能沒有metter什麼。

event.preventDefault()將阻止提交form,而不是要執行的其餘功能,這就是爲什麼您的ajax請求繼續執行。

+0

等等,這使得當「提交」再次點擊時,表格不提交。 – sudo

+0

@sudo sry,我沒有得到它。 – DontVoteMeDown

+0

沒關係,謝謝。我覺得這是朝着正確的方向邁進的一步lol – sudo

相關問題