2011-08-26 100 views
2

後我趕上上提交表單的按鈕點擊。我做event.preventDefault()禁用默認的瀏覽器動作,所以我可以在點擊按鈕後做我的東西。我這種情況下,我做AJAX調用服務器。通過服務器的響應,我想選擇是否繼續提交表單或做其他事情。觸發事件event.preventDefault

$inviteSubmitForm.find('input[name="accept"]').click(function(e){ 
    e.preventDefault(); 

    $.ajax({ 
     ... 
     success : function(data) { 

      if (data.something) { 
       ... 
      } else { 
       ... 
      } 

     } 
    }); 
}); 

問題與此是,我無法施展點擊按鈕的默認操作,COS邏輯在AJAX回調。所以return true只是結束回調函數 - 我不能使用這個簡單的技巧。也移動e.preventDefault()是不行,cos表單立即提交。

任何想法?

回答

0

觸發提交表單:

$inviteSubmitForm.find('input[name="accept"]').click(function(e){ 
    e.preventDefault(); 

    $.ajax({ 
     ... 
     success : function(data) { 

      if (data.something) { 
       // don't submit 
      } else { 
       $inviteSubmitForm.submit(); 
      } 

     } 
    }); 
}); 
+1

該解決方案是確定和工作,但 - 我有幾個形式提交按鈕。如果我想通過這種方法區分按鈕,我必須在原始提交按鈕的名稱後面添加。這仍然可以,但我正在尋找一個系統清潔的解決方案 - 改寫原始按鈕的舊事件。 – srigi

+0

@srigi:爲什麼你需要一個隱藏的輸入字段?你已經在做:'find('input [name =「accept」]')'這應該只是一個'type'按鈕。此外,如果你有相同的功能處理多個按鈕只需添加一個簡單的開關。你想讓我爲你添加一個例子嗎? – PeeHaa

+0

個人而言,我想看看如何在事件級別處理此問題。 –