繁体   English   中英

在按钮单击时禁用表单自动提交

[英]Disable form auto submit on button click

我有一个 HTML 表单,我在其中使用了几个按钮。 问题是无论我点击哪个按钮,即使按钮不是“提交”类型,表单也会被提交。 例如,像<button>Click to do something</button>这样的按钮,会导致表单提交。

为这些按钮中的每一个都做一个e.preventDefault()是相当痛苦的。

我使用 jQuery 和 jQuery UI,网站位于 HTML5 中。

有没有办法禁用这种自动行为?

<button>Click to do something</button>提交按钮。

设置type="button"来改变它。 type="submit"是默认值( 由 HTML 规范指定):

缺失值默认值和无效值默认值是提交按钮状态。

您可以尝试使用return false (return false 覆盖每个 DOM 元素的默认行为),如下所示:

myform.onsubmit = function ()
{ 
  // do what you want
  return false
}

然后使用 myform.submit() 提交表单

或者:

mybutton.onclick = function () 
{
   // do what you want
   return false
}

此外,如果您使用type="button"您的表单将不会被提交。

<button>实际上是提交按钮,它们没有其他主要功能。 您必须将类型设置为按钮。
但是,如果您像下面这样绑定您的事件处理程序,您就可以定位所有按钮,而不必为每个按钮手动执行此操作!

$('form button').on("click",function(e){
    e.preventDefault();
});

如果你想直接添加到输入作为属性,使用这个

 onclick="return false;" 

<input id = "btnPlay" type="button" onclick="return false;" value="play" /> 

这将阻止表单提交行为

就像mas-designs所说,调用preventDefault() 您可以在表单本身上调用它。 这是一个适用于所有形式的函数,vanilla JS。

function forms_ini(){
  for(var form of document.getElementsByTagName('form')){
    form.addEventListener('submit', function(ev){
      ev.preventDefault()
    })
  }
}

另一个:

if(this.checkValidity() == false) {

                $(this).addClass('was-validated');
                e.preventDefault();
                e.stopPropagation();
                e.stopImmediatePropagation();

                return false;
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM