【发布时间】:2010-01-04 14:35:30
【问题描述】:
有没有办法使用JavaScript 提交 HTML 表单,保证在所有情况下都有效?
我详细说明。常见的做法似乎是:
formElement.submit()
这一切都很好,除了一件事。表单的字段可作为formElement 的属性使用,因此如果有一个带有name 或id "text1" 的字段,则可以将其作为formElement.text1 访问。
这意味着如果一个元素被称为“提交”(无论是它的name还是它的id),那么formElement.submit() 将不起作用。这是因为formElement.submit 不是表单的方法,而是具有该名称的字段。不幸的是,提交按钮具有“提交”名称或 ID 是相当普遍的。
两个例子来说明我的观点。首先,以下内容将不起作用,因为表单元素的名称为“submit”:
<form name="example" id="example" action="/">
<button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
以下将起作用。唯一的区别是我从表单中删除了“提交”的名称:
<form name="example" id="example" action="/">
<button type="button" onclick="document.example.submit(); return false;">Submit</button>
</form>
那么,还有其他方法可以使用 JavaScript 提交 HTML 表单吗?
【问题讨论】:
-
很烦人......我遇到了同样的问题,表单的“长度”属性(控件的数量)被替换为名为“长度”的控件的值。最后我更改了控件的名称。
-
如果我建议给它换个名字,我是不是很愚蠢..?例如。
"action"或"run". -
@BalusC:对于特定站点中的单个脚本,更改名称确实就足够了。但是,如果您想构建一个库以在多个站点中使用,则需要提供最一般的情况。更改名称不是一个选项。
-
很好地解释了为什么 form.submit() 可能不起作用;解决了我的问题!
标签: javascript html forms