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

lod*_*ddn 3 html javascript

在表格里面我有一个按钮.我通过这样的JavaScript提交表单时有什么区别

<button onclick="document.forms[0].submit();">
Run Code Online (Sandbox Code Playgroud)

当我像这样提交时

<button type="submit"></button>?
Run Code Online (Sandbox Code Playgroud)

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

nnn*_*nnn 8

第一个例子:

<button onclick="document.forms[0].submit();">
Run Code Online (Sandbox Code Playgroud)

......会做两件事:

  1. onclick将提交第一表单文档中(即,通过在0索引指定的一个forms[0]).
  2. 它将提交它所在的表单(如果它在表单中),因为type默认情况下,没有指定属性的按钮将是提交按钮.

这个两步双重提交行为可以在这个快速而肮脏的演示中看到:http://jsfiddle.net/fMwuX/(并且可能会导致奇怪的行为,可能会让调试有点混乱).如果按钮实际上不在表单中,那么这将不是问题.

第二个例子:

<button type="submit"></button>
Run Code Online (Sandbox Code Playgroud)

将简单地提交它所在的表格(如果它在一个).

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

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