2011-08-23 248 views
3

真正簡單的形式的Javascript的onsubmit導致頁面刷新

<form id="addDonor" name="addDonor" onsubmit="addDonor(); return false;" action="" method="post" enctype="multipart/form-data"> 
<div class="sectionHeader">Add New Donor</div> 
<div class="formRow"><label>Name</label> <input class="inputText fullTextBar" type="text" name="userName"> 
<div class="formRow"><button style="margin-left:350px; width: 80px" type="button" class="publish">Add Donor</button></div> 
</form> 

而且addDonor功能

<script type="text/javascript"> 

function addDonor(){  
    alert("test"); 
    return false; 
} 
</script> 

最終,該功能將包括一些jQuery的AJAX提交信息。但是,寶貝,步驟。現在我甚至無法看到警報。另外,當我在鍵盤上點擊「Enter」時,整個頁面刷新,當我按下「Add Donor」時,沒有任何反應。

我相信它必須是一個簡單的問題。我認爲這是我需要別人眼睛指出的事情之一。

+0

您的按鈕沒有「onclick」功能。另一種方法是用''標籤......「> – fireshadow52

+0

您明確地設置按鈕爲**不** **提交按鈕:'type =「button」'。刪除並按鈕將工作。請參閱@丹尼斯關於處理程序的回答。 –

回答

4

嘗試在JavaScript中分配onsubmit事件:

document.getElementById("addDonor").onsubmit = function() { 
    alert("test"); 
    return false; 
} 

的問題是,你的功能被命名爲addDonor和你的元素是addDonor。每個帶有ID的元素都有一個在document下創建的對象來標識它。在內嵌的onsubmit中嘗試使用alert(addDonor)以查看它提醒HTML元素,而不是函數。內聯函數在文檔內的範圍鏈中執行,因此addDonor指向document.addDonor,然後到達window.addDonor(您的函數)。

+1

或者只是重新命名該功能。 –

+0

@Felix也可以。這只是個人喜好,你是否喜歡內聯JavaScript。這只是我在記憶之前修復的第一件事情)內聯js在文檔範圍中運行,b)帶有id的元素被添加到'document'下方。 – Dennis

+0

這很簡單,正如我認爲的那樣。以前從未遇到過這個問題。謝謝你解釋得很好。 – Andelas

1

你應該改變你的<button><input type="submit">(如@ fireshadow52建議),應該可以解決你的問題。您應該嘗試使用Wc3 Schools online javascript tester在將其放入頁面之前試用簡單的JavaScript,或者選擇其他任何您喜歡的。谷歌有這方面的東西。另外,您通常可以在各自的瀏覽器上嘗試使用JavaScript控制檯。

1

您的按鈕明確設置爲type="button",這不會使其提交表單。如果您願意,可以將其更改爲<button type="submit"><input type="submit">(我自己喜歡<button>的樣式選項)。