2012-01-11 111 views
1

我有一個HTML表單,當前只是將數據直接發佈到PHP文件。我想更新代碼,以便提交按鈕將數據發送到JavaScript函數,以便我可以創建AJAX函數。提交按鈕是否可以激活JavaScript函數而不是發佈到php文件?我想出的唯一事情是低於,這很顯然是行不通的:我可以使用提交按鈕來激活AJAX功能嗎?

<html> 
<head> 
<script type="text/javascript"> 
function ajax(){ 
    //... 
} 
</script> 
</head> 

<body> 
<form action="ajax();"> 
    <!-- ... --> 
    <input type="submit" value="Submit" /> 
</form> 
</body> 
</html> 

回答

6

你可以給「提交」輸入「點擊」處理程序,明確阻止正在開展的默認行爲。

<input type='submit' value='Submit' onclick='ajax(event)'> 

然後在功能:

function ajax(event) { 
    if ('preventDefault' in event) event.preventDefault(); 
    event.returnValue = false; // for IE before IE9 
    // ... 
} 

編輯 @Esailija指出正確的是另一種選擇是處理<form>元素「提交」事件來代替。該功能看起來幾乎是一樣的,其實完全一樣,但你會連線起來是這樣的:

<form id='yourForm' onsubmit='ajax(event)'> 

這也會陷阱的東西,如「Enter」鍵動作等

+0

你能解釋一下這種情況下的事件嗎?另外,這會將表單中的數據發送到javascript函數還是我必須自己檢索它? – ewok 2012-01-11 14:23:02

+0

「event」參數是由瀏覽器創建的一個對象,用於描述觸發對事件處理程序的調用的事件。該代碼不會隨處發送任何內容;就像你問的那樣,這只是你如何設置功能的一個例子。執行ajax調用的代碼將在我的示例中的函數的前兩行之後。具體怎麼做取決於你的表單和你的服務器等。 – Pointy 2012-01-11 14:24:46

+1

但是表單仍然會通過其他方式提交(比如按下回車鍵),我認爲在提交和離開的表單中這樣做更加強大單獨提交按鈕。 – Esailija 2012-01-11 14:25:33

2

當然可以。但它更有用打電話給你的JavaScript函數在這樣的輸入:

<input type="submit" value="Submit" onclick="ajax();" /> 

並刪除形式的行動的一部分。

0

Pointy是正確的......只需在提交按鈕中添加點擊處理程序,但要確保點擊處理程序的最後一行返回「false」以防止表單實際上被髮布到表單的操作。

<html> 
<head> 
<script type="text/javascript"> 
function ajax(){ 
    //... 
return false; 
} 
</script> 
</head> 

<body> 
<form action="thispage.htm"> 
    <!-- ... --> 
    <input type="submit" value="Submit" onclick="ajax();" /> 
</form> 
</body> 
</html> 
+0

調用'。preventDefault()'並將'returnValue'設置爲'false'具有取消元素默認操作的效果。 – Pointy 2012-01-11 14:25:31

+0

如果你要'返回false',它需要處理函數。 'onclick =「ajax(); return false;」'或'onclick =「return ajax();」' – Esailija 2012-01-11 14:32:32