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