当按钮名称为"提交"时,表单提交按钮不会提交

Jef*_*ohl 5 html javascript forms submit button

当提交按钮的name属性正好"提交"时,我无法在提交表单时提交.

这是代码:

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

请注意,我们没有使用标准输入类型的"提交",而是使用JavaScript作为"按钮"的输入类型,在验证脚本(checkForm)返回true之后使用JavaScript来提交表单.

奇怪的是,当且仅当name属性为"submit"时,这将不起作用.该问题区分大小写,因此以下(以及任何其他命名,包括无名称属性)将起作用:

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

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

谢谢你的帮助.

Nic*_*ver 15

你遇到问题是因为name存在submit覆盖了form.submit()函数引用<form>,而是form_29.submit引用了那个按钮,而不是DOM submit()函数.

  • 是的,这就是Netscape最初决定表单字段应该反映在`form`对象上的命名属性,而不仅仅是你期望它们的`form.elements`集合.这个,以及`document`上的命名元素的反映(以及在IE甚至更糟的情况下,`window`)已经引起了无穷无尽的问题.我们现在永远无法摆脱这种错误的错误设计.该死的胖子,"眨眼"的脸. (7认同)