当提交按钮的名称为“submit”时,表单提交按钮将无法提交。

6
我在表单提交时遇到了麻烦,当提交按钮的name属性恰好为"submit"时,无法成功提交。

这是代码:

<input onclick="checkForm(document.form_29) && document.form_29.submit();" value="Submit" name="submit" type="button">

请注意,我们没有使用标准的输入类型"submit",而是使用JavaScript在验证脚本(checkForm)返回true后提交表单的输入类型"button"。

奇怪的是,只有当name属性为"submit"时,它才无法正常工作。问题是区分大小写的,所以以下内容(包括没有name属性的任何其他命名)都可以工作:

<input onclick="checkForm(document.form_29) && document.form_29.submit();" value="Submit" name="Submit" type="button">

我一直在查看W3C规范,希望找到保留名称的提及,但我找不到任何信息。我怀疑我在这里忽略了一些非常明显的东西,所以我希望你们中的一些人能够看到我看不到的东西。

感谢任何帮助。


最好选择 type="submit" - Gordon Gustafson
是的 - 我想这样做,但我不能 - 我不会解释原因 - 这是一个漫长的故事,而且这不是我可以做出的决定。 - Jeff Fohl
1个回答

15

你遇到问题是因为 namesubmit 的按钮覆盖了该 <form>form.submit() 函数引用,因此 form_29.submit 引用了该按钮,而不是 DOM 中的 submit() 函数。


哎呀!谢谢!我很确定那就是答案了... - Jeff Fohl
7
是的,这一切都是Netscape的错,因为他们最初决定表单字段应该作为form对象上的命名属性反映出来,而不是在您期望的form.elements集合中。这个问题以及在文档(在IE更糟糕的情况下是窗口)中反映命名元素,已经导致了无尽的问题。现在我们永远无法摆脱这个令人讨厌的设计失误。该死他们肥胖的、<blink>​闪烁的</blink>面孔。 - bobince

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接