我有一个HTML表单,我使用几个按钮。问题是,无论我点击哪个按钮,表单都会被提交,即使按钮类型不是“提交”。例如:<button>点击做某事</button>,导致表单提交。
为每个按钮执行e.preventDefault()是非常痛苦的。
我使用jQuery和jQuery UI,网站是在HTML5。
是否有办法禁用这种自动行为?
我有一个HTML表单,我使用几个按钮。问题是,无论我点击哪个按钮,表单都会被提交,即使按钮类型不是“提交”。例如:<button>点击做某事</button>,导致表单提交。
为每个按钮执行e.preventDefault()是非常痛苦的。
我使用jQuery和jQuery UI,网站是在HTML5。
是否有办法禁用这种自动行为?
像<button>Click to do something</button>是提交按钮。
设置type="button"来改变这一点。type="submit"是默认值(由HTML规范指定):
缺失值default和无效值default是提交按钮状态。
<button>'s实际上是提交按钮,它们没有其他主要功能。您必须将类型设置为button。 但是如果你像下面这样绑定你的事件处理程序,你的目标是所有的按钮,而不必手动为每个按钮!
$('form button').on("click",function(e){
e.preventDefault();
});
你可以尝试使用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",你的表单将不会被提交。
如果你想直接添加到输入属性,使用这个
onclick="return false;"
<input id = "btnPlay" type="button" onclick="return false;" value="play" />
这将防止表单提交行为
另一个:
if(this.checkValidity() == false) {
$(this).addClass('was-validated');
e.preventDefault();
e.stopPropagation();
e.stopImmediatePropagation();
return false;
}
如mass -designs所说,调用preventDefault()。您可以在表单本身上调用它。这里有一个函数可以为所有表单执行此操作,即普通JS。
function forms_ini(){
for(var form of document.getElementsByTagName('form')){
form.addEventListener('submit', function(ev){
ev.preventDefault()
})
}
}