2016-06-14 127 views
0

我有一個形式,這樣我的Javascript代碼:形式不提交

var btnSubmit = document.getElementById("submit"); 
 
btnSubmit.addEventListener("click", sending); 
 

 
function sending() { 
 
    btnSubmit.disabled = true; 
 
    btnSubmit.value = "Sending..."; 
 
    btnSubmit.form.submit(); //<----- this doesn't do anything!!! 
 
}
<form id="form_save" action="/ValidatePicsServlet" method="post"> 
 
    <!-- more inputs --> 
 
    <button id="submit" type="button">Save changes</button> 
 
</form>

正如你所看到的,最後一行沒有做任何事情,並且數據未提交。

我在哪裏錯了?

編輯:我很抱歉!我錯誤地複製了代碼。 eventListener實際上稱爲發送函數,這是正確的。我很尷尬......

+1

你函數名應該是「發送」 –

+1

給按鈕的ID *提交*可能掩蓋表單提交方法(的名字*提交*肯定不會),所以它可以」不要叫。表單可以在不點擊按鈕的情況下提交,因此將偵聽器放在表單的提交處理程序上,更改按鈕以鍵入提交併刪除ID。 – RobG

+0

@Xufox,這是我的一個錯誤...修正了,但它並沒有影響我想要重演的內容:( – Ommadawn

回答

0

這是因爲form.submit被您在表單內創建的submit元素所覆蓋。 只需更改您的按鈕的ID,它的工作就像一個魅力。

var btnSubmit = document.getElementById("submit-button"); 
 
btnSubmit.addEventListener("click", sending); 
 

 
function sending() { 
 
    btnSubmit.disabled = true; 
 
    btnSubmit.value = "Sending..."; 
 
    btnSubmit.form.submit(); 
 
}
<form id="form_save" action="/ValidatePicsServlet" method="post"> 
 
    <!-- more inputs --> 
 
    <button id="submit-button" type="button">Save changes</button> 
 
</form>

+0

非常感謝,@威廉克萊恩,就是這樣!:) – Ommadawn

-2

嘗試添加「提交」類型到您的表單按鈕。

<input type="submit" id="submit" value="Submit"> 
+1

@ Xufox-但OP有'type =「button」',所以它不是提交按鈕。 – RobG