简而言之:将提交按钮的ID更改为不同于“提交”的内容。此外,也不要将名称设置为此值。
现在,一些更深入的见解。一般情况下,这document.formname.submit
是一种在调用时将提交表单的方法。但是,在您的示例中,document.formname.submit
不再是方法,而是表示按钮的 DOM 节点。
发生这种情况是因为表单的元素可以通过它们的name
和id
属性作为其 DOM 节点的属性使用。这个措辞有点混乱,所以这里有一个例子:
<form name="example" id="example" action="/">
<input type="text" name="exampleField" />
<button type="button" name="submit" onclick="document.example.submit(); return false;">Submit</button>
</form>
在此示例中,document.forms.example.exampleField
是一个 DOM 节点,表示名称为“exampleField”的字段。你可以使用 JS 来访问它的属性,例如它的值:document.forms.example.exampleField.value
.
然而,在这个例子中,有一个名为“提交”的表单元素,这是提交按钮,可以使用 访问document.forms.example.submit
。这会覆盖之前的值,这是允许您提交表单的函数。
编辑:
如果重命名字段对您不利,还有另一种解决方案。在写这篇文章之前不久,我把这个问题留在了网站上,并以简洁的 JavaScript hack 的形式得到了回复:
function hack() {
var form = document.createElement("form");
var myForm = document.example;
form.submit.apply(myForm);
}
请参阅如何使用 JavaScript 可靠地提交 HTML 表单?完整的细节