<button type="button">
和一个没有 type
属性或空值的 <button>
有什么不同吗?MDN 和 HTML5 规范说,type=button
是用于触发自定义 JavaScript 的按钮,但默认情况下 <button>
也是这样做的,对不对?
<button type="button">
和一个没有 type
属性或空值的 <button>
有什么不同吗?MDN 和 HTML5 规范说,type=button
是用于触发自定义 JavaScript 的按钮,但默认情况下 <button>
也是这样做的,对不对?
是的,有一个原因 - 但通常只适用于您位于 <form>
元素中时。
如果您在表单元素中包含一个按钮,而没有指定它只是一个普通按钮,它将默认为提交按钮。
<form>
<button>I will submit the form when clicked!</button>
</form>
vs
<form>
<button type='button'>I won't!</button>
</form>
type=submit
,因为没有指定type
属性。
<form>
元素中,则该按钮将没有任何内容可以提交,因此这并不重要。 :)type
的习惯。
[type=button]
或类似规则的样式。 不过,这并不推荐。因此,将类型设置为“button”会禁用提交表单的默认行为,因此您无需使用preventDefault来处理它。缺失值的默认状态是提交按钮。
<button>
元素默认的type = "submit"
,这意味着如果它在表单元素内,它将尝试提交表单。您可以将点击事件绑定到它上面并执行一些操作。
<button type="button">
意味着它是一个普通按钮,您需要绑定点击事件才能执行一些操作。
还有一个<button type="submit">
,当点击时会提交表单。
因此,如果您想使用ajax执行POST请求,最好使用<button type="button">
,这样当按钮被点击时就不会提交表单。
submit
。这表明不应该有提交选项,只应该是一个可点击的对象。关于未指定类型的<button>
,我的个人经验是,每当单击它们时,用于保存表单更改的保存按钮会自动禁用,尽管没有实际的提交/发布请求。
这很奇怪,因为每当您尝试上传文件时,在文件选择窗口消失后,您实际上无法保存所做的更改,因此无法上传文件。
保存按钮将正确禁用,因为定义为ng-disabled="form.$submitted"
,因此在保存后您无法再次单击它。
我从调试器中看到表单的AngularJS $submitted
标志为true并且最近更改了一些内容,从而得知了发生了什么。
我通过将按钮的类型设置为"button"
来解决问题,以便它不会触发表单提交状态的更改,因为其默认类型为"submit"
,如其他答案所述。
据我研究,<button>
元素是在HTML4中引入的,默认类型为submit。