在表单中,我有一个按钮。当我像这样通过 JavaScript 提交表单时有什么区别
<button onclick="document.forms[0].submit();">
当我这样提交时
<button type="submit"></button>?
第一个适用于大多数浏览器,除了基于 webkit 的浏览器。后者也可以正常工作。对我来说,功能上没有明显差异。有吗?
在表单中,我有一个按钮。当我像这样通过 JavaScript 提交表单时有什么区别
<button onclick="document.forms[0].submit();">
当我这样提交时
<button type="submit"></button>?
第一个适用于大多数浏览器,除了基于 webkit 的浏览器。后者也可以正常工作。对我来说,功能上没有明显差异。有吗?
第一个例子:
<button onclick="document.forms[0].submit();">
...将做两件事:
onclick
它将提交文档中的第一个表单(即,由 0 索引指定的表单forms[0]
)。type
指定属性的按钮默认是提交按钮。这个两步双提交行为可以在这个快速而肮脏的演示中看到:http: //jsfiddle.net/fMwuX/(并且可能会导致奇怪的行为,这可能会使调试有点混乱)。如果按钮实际上不在表单中,那么这将不是问题。
第二个例子:
<button type="submit"></button>
将简单地提交它所在的表单(如果它在一个表单中)。
在我看来,第二个选项绝对更可取,原因有几个,包括但不限于:
forms[0]
。javascript 示例将提交 HTML 文档中的第一个表单,而第二个示例将提交包装该按钮的表单。
documents.forms[0].submit
将触发 HTML 页面中第一个表单的提交。确实,documents.forms
包含您文档的所有形式。您可以使用它们的名称属性或索引来访问它们。
然后,submit
在一个表单中输入 type 会触发他的父表单的提交。
正如您所发现的,第一个使页面在某些情况下无法工作,并且 - 由于这个和其他原因 - 通常被认为是不好的做法。使用第二个。