javascript - 为什么不能通过名称为 "submit"的按钮提交 HTML 表单?

标签 javascript html forms

我正在尝试提交一个 HTML 表单,

<form action="go.php">
    <input id="I" type="button" name="submit" value="Go" onclick="this.form.submit()"/>
</form>

上面的代码失败了,但是如果我将按钮的名称更改为其他名称,例如,

<form action="go.php">
    <input id="I" type="button" name="bt" value="Go" onclick="this.form.submit()"/>
</form>

它有效。为什么?这两者有什么区别?

最佳答案

表单中具有“名称”属性的交互元素在 DOM 图中与表单 DOM 节点相关联,作为节点的属性。属性名称取自交互元素上的“名称”属性。

因此,如果您通过开发人员控制台查看表单节点,您将看到与您的输入元素、按钮、文本区域、选择等对应的属性。因此,给定:

<form id=myform>
  <input name=sometext value="hello world">
</form>

那么这将适用于 JavaScript:

var f = document.getElementById("myform");
alert(f.sometext.value); // "hello world"

当您使用与表单 DOM 节点上的其他有用属性(如“提交”)冲突的名称时,这种奇怪的行为会导致问题。通过名称“提交”对按钮的引用覆盖了对表单节点“诞生”时存在的“提交”功能的引用。

关于javascript - 为什么不能通过名称为 "submit"的按钮提交 HTML 表单?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30014765/

相关文章:

forms - 从无脂肪框架中的表单获取数据值

c# - 如何在javascript中获取动态控件的id

html - 当用户使浏览器窗口变大时,如何使我的网页适合浏览器?

javascript - 使用 jQuery 制作 Nivo slider 方向导航箭头淡入

html - 在 R 函数中设置 html 表的类

css - Div 中的 HTML5 视频背景 - 需要帮助调整到窗口大小

java - 如何从java中发布类似表单的图像数据

html - 所有浏览器都会忽略无名输入字段吗?

javascript - jquery 快速悬停问题

javascript - 在 HTML 表单中使用自动生成的(即随机的)ID