2011-06-09 22 views
10

那麼有人可以告訴爲什麼這些選項都不會實際提交表單嗎?我試圖做一些更復雜,但我已經熬下來到這,試圖弄清楚爲什麼我似乎無法得到這種形式使用點擊事件提交併提交()使用jquery點擊事件提交表單

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Untitled Document</title> 
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script> 
<script type="text/javascript"> 
$(function() { 
    $('#submitButton').click(function(e) { 
     e.preventDefault(); 
     $("#testForm").submit(); 
    }); 

    $('#submitLink').click(function(e) { 
     e.preventDefault(); 
     $("#testForm").submit(); 
    }); 
}); 
</script> 
</head> 

<body> 
<form action="javascript:alert('submitted');" method="post" id="testForm"> 
    <label>Name</label> 
    <input type="text" name="name" value="" /> 
    <input type="submit" name="submit" value="Submit" id="submitButton" /> 
    <p><a href="#" id="submitLink">Submit Form</a></p> 
</form> 

</body> 
</html> 

謝謝!

回答

5

如果您有一個表單操作和一個輸入類型=在表單標籤中提交,它將提交舊式的方式並基本刷新頁面。在進行AJAX類型的交易時,這不是預期的效果。

刪除操作。或者完全刪除表單,儘管它可以方便地序列化以減少工作量。如果表單標籤保持不變,則將按鈕移動到表單標籤之外,或者使其成爲與onclick或click處理程序的鏈接,而不是輸入按鈕。 Jquery UI Buttons在這種情況下效果很好,因爲您可以使用標籤元素來模擬輸入按鈕。

+0

的動作就是我使用測試,看看是否形式提交,這是不是。在我的實際代碼中,我沒有做AJAX類型的事務,我將表單提交給服務器並使用php進行處理。但在處理之前,我正在使用Facebook API來查看用戶是否也想將他們的帖子提交到他們的facebook牆上。所以,實際上,我需要在提交之前給他們時間做出迴應。以上兩個例子的奇怪之處在於,沒有人真正提交過對我來說毫無意義的表格。 – MatthewLee 2011-06-09 21:36:54

+0

我可以想象,在提交表單之前在服務器端執行Facebook檢查會更容易,如果所需操作未提交,則返回false。 – bpeterson76 2011-06-09 21:39:52

+0

好的,現在我明白了,表單標籤中的提交按鈕正在打破它的兩個選項。當我刪除提交按鈕時,鏈接按預期工作。感謝bpetersen! – MatthewLee 2011-06-09 21:40:58

2

你需要將表單發佈到URL還是隻需要檢測提交事件?因爲你可以通過添加onsubmit="javascript:alert('I do also submit');"

<form action="javascript:alert('submitted');" method="post" id="testForm" onsubmit="javascript:alert('I do also submit');">...</form> 

不知道,這是你在找什麼,雖然檢測提交事件。

+1

感謝亨利克的想法,但我確實想提交表格 – MatthewLee 2011-06-09 21:39:34

10

這是因爲提交按鈕的名稱被命名爲「submit」,將其更改爲除「submit」之外的任何內容,請嘗試「submitme」並重試它。它應該然後工作。

+0

優秀和純粹的答案。大!!!謝謝。 – 23W 2014-08-15 07:00:54

+1

等等,什麼?爲什麼?...編輯:[這是爲什麼](http://stackoverflow.com/questions/3571328/form-submit-button-will-not-submit-when-name-of-button-is-submit)。謝謝! – Sam 2016-12-07 20:49:22

8

爲什麼不簡單地使用提交按鈕來運行你想要的代碼。如果你的函數返回false,它將取消提交。

$("#testForm").submit(function() { 
    /* Do Something */ 
    return false; 
}); 
3

使用jQuery按鈕點擊

$('#button_id').on('click',function(){ 
    $('#form_id').submit(); 
});