当输入名称调用submit时,为什么表单不使用JavaScript提交

Why the form not submitting using JavaScript when input name called submit?

本文关键字:表单 提交 JavaScript 为什么 输入 调用 submit      更新时间:2023-09-26

我有以下表单。当我将输入名称设置为submit时,它不会提交表单,为什么?

<form id="login" method="post" action="">
    <input type="hidden" name="username" value="someval">
    <input type="hidden" name="userpass" value="somepass">
    <input type="hidden" name="submit" value="Login">
</form>
<script type="text/javascript">
  var timeout = 12;
  setTimeout(function () {
      document.getElementById('login').submit();
  }, timeout);
</script>

错误消息为:

未捕获的类型错误:document.getElementById(…).submit不是函数(…)

我想提交名称在某种程度上删除了提交功能?

带有和不带有提交名称的JSFiddle。

编辑到我的问题:

当包含名为submit的输入时,我如何使用js提交表单?

JavaScript有一个用于属性和方法的命名空间。每个命名字段都成为表单对象的一个属性。在您的情况下,document.getElementById('login').submit不再是一个方法,而是一个输入字段。

因为您可以将表单的子元素作为直接属性进行访问。所以在你的情况下:

'use strict';
let form = document.getElementById('login');
console.log(form.username, form.userpass, form.submit); // 3 input elements

因此,当你有一个名为submit的元素时,它会遮蔽submit()函数,因此你会得到关于它不是函数的错误。