Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 不提交表单的HTML按钮_Javascript_Html - Fatal编程技术网

Javascript 不提交表单的HTML按钮

Javascript 不提交表单的HTML按钮,javascript,html,Javascript,Html,我有一张表格。在那张表外面,我有一个按钮。一个简单的按钮,如下所示: <button>My Button</button> 我的按钮 但是,当我单击它时,它会提交表单。代码如下: <form id="myform"> <input /> </form> <button>My Button</button> 我的纽扣 这个按钮应该做的只是一些JavaScript。但是,即使它看起来像上面的代码一样

我有一张表格。在那张表外面,我有一个按钮。一个简单的按钮,如下所示:

<button>My Button</button>
我的按钮
但是,当我单击它时,它会提交表单。代码如下:

<form id="myform">
    <input />
</form>
<button>My Button</button>

我的纽扣
这个按钮应该做的只是一些JavaScript。但是,即使它看起来像上面的代码一样,它也会提交表单。当我将tag按钮更改为span时,它可以完美地工作。但不幸的是,它需要一个按钮。有没有办法阻止该按钮提交表单?像e。g

<button onclick="document.getElementById('myform').doNotSubmit();">My Button</button>
我的按钮

返回false将执行此任务。但是,最好是简单地将
type=“button”
添加到
中,这样即使没有任何JavaScript,它也能正常运行。

我认为这是HTML最烦人的一点特性。。。该按钮必须为“按钮”类型才能不提交

<button type="button">My Button</button>
我的按钮
更新日期:2019年2月5日:根据(以及):

缺少的默认值和无效的默认值是Submit 按钮状态


建议不要使用
标记。改用
标记。(使用“返回false”确实不应发送表单。)


有些人认为戴夫·马克尔是正确的。发件人:

始终为指定类型属性 按钮。的默认类型 Internet Explorer是“按钮”,而 在其他浏览器中(以及在W3C中 规格)它是“提交”


换句话说,您使用的浏览器遵循W3C的规范。

默认情况下,html按钮提交表单

这是因为即使是位于表单外部的按钮也充当提交者(请参见W3Schools网站:)

换句话说,按钮类型默认为“提交”

<button type="submit">Button Text</button>
按钮文本
因此,解决这个问题的简单方法是使用按钮类型

按钮文本
其他选项包括在onclick结束时返回false,或者在单击按钮时返回任何其他处理程序,或者改为使用标记


要了解更多信息,请查看Mozilla开发者网络中关于按钮的信息:

出于可访问性的原因,我无法使用多个
type=submit
按钮来完成它。本机使用带有多个按钮的
表单
,但只有一个可以在点击
Enter
键时提交表单的唯一方法是确保其中只有一个是
type=submit
,而其他的是其他类型,如
type=button
。通过这种方式,您可以在键盘支持方面从浏览器处理表单的更好用户体验中获益。

另一个对我有效的选项是在表单标记中添加onsubmit=“return false;”

<form onsubmit="return false;">


从语义上讲,这可能不如上述更改按钮类型的方法那么好,但如果您只想要一个不会提交的表单元素,这似乎是一个选项。

不提交表单的按钮只在启用JavaScript的情况下有用。。。我同意type=“button”更干净。
返回false不适用于所有场景,而
type=“Button”
适用于所有场景。即使启用了JavaScript,使用
就足够了,并且
返回false就足够了-没有必要同时做这两件事。我不同意建议不要使用按钮标签。如果您不使用它,您将失去一些可访问性功能,这些功能可以通过按钮标记自动获得。我想说的是,按钮标签实际上被推荐用于充当按钮的元素。根据您链接的参考资料中的注释:“虽然button类型的元素仍然是完全有效的HTML,但较新的元素现在是创建按钮的首选方式。”因此,这与您所说的完全相反。@Powerslave没有任何理由不使用
@SandipPingle没有理由使用它,除非您需要一些非常复杂的样式。此外,IE6和IE7(幸运的是被逐步淘汰)在某些情况下处理
错误。此外,
不是100%跨浏览器兼容的,因为在表单中使用时,不同的浏览器可能会为相同的
提交不同的值。这是一个很好的答案,但不是一个特例。
标记中的
类型
属性的默认值是
提交
。当更改为
type=button
时,
没有默认行为。请看这里的
类型
属性:那么
的想法是什么,这对我来说太难了哈哈。不管怎样,你的答案很好!非表单特定元素的默认(因此是隐式)行为是触发潜在的破坏性表单特定功能。对于HTML规范来说,这怎么不是一个特殊的设计决策呢?
<form onsubmit="return false;">