【问题标题】:Submit form from a button tag从按钮标签提交表单
【发布时间】:2013-02-11 18:49:32
【问题描述】:

我在提交表单时添加了一个事件监听器,代码如下:

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();
}

这样,表单已提交,但提交事件(第一行代码)似乎不起作用我该怎么做才能使它起作用?

【问题讨论】:

  • 为什么不让您的点击处理程序触发验证?
  • 这可能不正确,所以我不会将其作为答案提交,但有时我在事件处理程序中触发事件时遇到问题。如果将触发提交事件的行替换为var myForm = this.form; setTimeout(function() { myForm.submit(); }, 0);,会发生什么?

标签: javascript html forms events submit


【解决方案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");
  }
}

【讨论】:

    【解决方案2】:

    尝试在表单元素的“onsubmit”属性中设置函数名称。

    【讨论】:

    • 如果您想退出提交,请记住返回 false。
    【解决方案3】:

    您的问题可能与阻止默认行为发生有关。

    您需要在处理函数中接收事件才能执行此操作。

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

    【讨论】:

      猜你喜欢
      • 2014-03-23
      • 1970-01-01
      • 2013-08-06
      • 2018-07-03
      • 2011-10-24
      • 1970-01-01
      • 1970-01-01
      • 2019-08-25
      • 1970-01-01
      相关资源
      最近更新 更多