2013-02-11 99 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 
}