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

时间:2015-12-30 07:59:53

标签: javascript forms dom

我有以下表格。当我将输入名称设置为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>

错误信息是:

  

未捕获TypeError:document.getElementById(...)。submit不是函数(...)

我猜提交名称是否以某种方式删除了提交功能?

JSFiddle withwithout提交姓名。

编辑我的问题:

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

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

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

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