为什么不应该将Form Elements命名为Submit?

cus*_*man 3 javascript

我通过调试发现我不应该为任何Form Elements命名name="submit",但是即使经过搜索,我也没有找到为什么的任何很好的解释?

请参见下面的简单代码示例:

<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="utf-8" />
        <title></title>
    </head>
    <body>
        <form action="javascript:alert('submitted');" method="post" id="test-form">
            <label>Name</label>
            <input type="text" name="name-field" value="" />
            <input type="submit" name="submit" value="Submit Button" /> <!-- name should not be "submit" -->
            <p><a href="javascript: document.getElementById('test-form').submit();">Submit Link</a></p>
        </form>
    </body>
</html>
Run Code Online (Sandbox Code Playgroud)
  • 如果按Enter键,而在表单的任何元素或点击提交按钮,它会工作。
  • 如果单击提交链接”,则会出现错误

    未处理的错误:'document.getElementById('test-form')。submit'不是一个函数

如果你只是重命名您的提交按钮任何东西比其他name="submit"(即使你只是利用它的某些部分),或者只是删除name="submit"属性,那么无论是提交按钮,并提交链接会工作。

我在Internet Explorer,Firefox,Opera,Chrome和Safari的最新版本中尝试了此操作。他们所有人对此都有一致的行为。

正如您在我的代码示例中看到的那样,它不涉及jQuery或任何其他JavaScript库。

我会很高兴的解释。谢谢

Jer*_*her 5

如果您在此处查看Mozilla文档:https : //developer.mozilla.org/en-US/docs/DOM/HTMLFormElement

您将看到表单具有.submit()方法。

此外,表单中还填充有表单中的字段。

(以下是一个示例:http : //www.devbay.com/articles/javascript/accessing-form-elements-array-with-javascript/ 我找不到应该发生的任何引用,只是发现了它。)

因此,当您创建一个名为submit它的元素时,它会覆盖内置的表单submit()方法,并且由于该元素不是函数,所以您会收到该错误消息。