2013-02-11 100 views
0

我說時,我的表單提交事件偵聽器提交表單,這是代碼:從按鈕標籤

var formo = document.getElementById("ing"); 
formo.addEventListener("submit", validation, false); 

,但我提交表單與此代碼按鈕標籤:

var enviar = document.getElementById("submit_btn"); 
enviar.addEventListener("click", envioFormulario, false); 

function envioFormulario() { 
    this.disabled = true; 
    this.value = "Sending"; 
    this.form.submit(); 
} 

與此表單提交,但提交事件(的第一行代碼)似乎並不工作,我能做些什麼,使工作?

+4

爲什麼不能有自己的點擊處理火驗證? – Mathletics 2013-02-11 18:51:58

+0

這可能是非基礎的,所以我不會將它作爲答案提交,但我有時會在事件處理程序內觸發事件。如果用'var myForm = this.form;替換觸發提交事件的行,會發生什麼? setTimeout(function(){myForm.submit();},0);'? – dgvid 2013-02-11 18:57:33

回答

0

嘗試在表單元素的「onsubmit」屬性中設置函數名稱。

+0

如果你想退出提交,請記住返回false。 – 2013-02-11 18:56:44

1

我同意@Mathletics的評論。只需點擊時進行驗證,如果通過驗證則提交:

var enviar = document.getElementById("submit_btn"); 
enviar.addEventListener("click", envioFormulario, false); 

function envioFormulario() { 
    if (validation()) { 
     this.disabled = true; 
     this.value = "Sending"; 
     this.form.submit(); 
    } else { 
     alert("Validation failed. Didn't submit"); 
    } 
} 
0

您的問題可能是防止發生默認行爲。

您需要在您的處理函數中接收事件來完成該操作。

function validation(event) 
{ 
    if (event.preventDefault) event.preventDefault(); 
    event.returnValue = false; 
    // continue validating 
}