【问题标题】:Why the form not submitting using JavaScript when input name called submit? [duplicate]为什么输入名称称为提交时表单不使用 JavaScript 提交? [复制]
【发布时间】:2016-04-04 04:21:33
【问题描述】:

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

编辑我的问题:

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

【问题讨论】:

标签: javascript forms dom


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 2015-02-14
    相关资源
    最近更新 更多