onclick =“document.forms [0] .submit();”之间的区别和表格提交

时间:2012-06-28 07:44:31

标签: javascript html

在表格中我有一个按钮。我通过JavaScript提交表单时有什么区别

<button onclick="document.forms[0].submit();">

当我像这样提交时

<button type="submit"></button>?

第一个适用于大多数浏览器,除了基于webkit。后者也可以正常工作。我没有明显的功能差异。有吗?

4 个答案:

答案 0 :(得分:8)

第一个例子:

<button onclick="document.forms[0].submit();">

...会做两件事:

  1. onclick将在文档中提交第一个表单(即forms[0]中0索引指定的表单。)
  2. 它将提交它所在的表单(如果它在表单中),因为默认情况下指定了type属性的按钮将是提交按钮。
  3. 这个两步双重提交行为可以在这个快速而肮脏的演示中看到:http://jsfiddle.net/fMwuX/(很可能会导致奇怪的行为,可能会让调试有点混乱)。如果按钮实际上不在表单中,那么这不会是一个问题。

    第二个例子:

    <button type="submit"></button>
    

    只需提交所在的表格(如果是一张表格)。

    在我看来,第二种选择绝对是可取的,原因有多种,包括但不限于:

    1. 即使用户已禁用JS,它也能正常工作。
    2. 它不会使用forms[0]对表单索引进行硬编码。
    3. 它更短更清晰。
    4. 它不会与其他表单提交验证冲突。

答案 1 :(得分:2)

javascript示例将在HTML文档中提交第一个表单,而第二个示例将提交包装该按钮的表单。

答案 2 :(得分:1)

documents.forms[0].submit将触发您在HTML页面中提交第一个表单。实际上,documents.forms包含文档的所有形式。您可以使用其名称属性或索引访问它们。

然后,表单中类型submit的输入将触发其父表单的提交。

答案 3 :(得分:-1)

正如您所发现的,第一个使得页面在某些情况下不起作用,并且 - 由于这个原因和其他原因 - 通常被认为是不好的做法。使用第二个。