2013-11-29 92 views
0

我有我檢查自己的價值觀與阿賈克斯,如果有效,則發送到另一個頁面,這裏是我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 s。

+0

event.preventDefault(); ?? –

+0

我想停止提交,直到ajax驗證未完成然後提交它,然後我必須添加'event.preventDefault();'在第一個這是錯的? – mojibuntu

+0

JS在第一次運行後可能會崩潰,永遠不會有機會再次運行。根據你的代碼評論,你忘記了右括號。 –

回答

0

我會建議你保持一個全局var isok ='',如果所有的result.isok =「1」比donot做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

謝謝。但仍然需要兩次點擊:( – mojibuntu

+0

什麼是結果值 - 你確定它的即將result.isOK =='1'在第一次點擊..如果可能提供一些jsfiddle演示。 – Neha

相關問題