【问题标题】:How to submit form using JS [duplicate]如何使用JS提交表单[重复]
【发布时间】:2012-10-04 06:51:42
【问题描述】:

可能重复:
submit is not a function in javascript

我正在尝试使用 JS 提交表单,但没有成功。 Here is the code. JSFIDDLE

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript" src="js/jquery.js"></script>
    <script type="text/javascript">
    function validate () {
        alert('start');        
        $('#myform').submit();
        alert('end');        
    }
    </script>
</head>
<body>
    <form id="myform" name="myform" method="post" action="">
        <input type="button" value="submit" id="submit" onclick="validate();" >
    </form>
</body>
</html>

问题是“为什么它不起作用?”。

【问题讨论】:

  • 不工作是什么意思?页面有错误吗?
  • 警报是否被调用?

标签: javascript jquery html forms


【解决方案1】:

您有一个 ID 为 submit 的表单元素与表单方法 submit 冲突,请将提交按钮 ID 更改为其他内容。

您可以将表单元素作为表单对象的属性来访问,因此如果您有一个表单,例如 myForm,并且表单中有一个带有 id 或名称 submit 的输入,那么 myForm.submit 将是带有 id submit 而不是原始的输入元素提交方法。

http://jsfiddle.net/4kg8c/1/

【讨论】:

  • 这是否意味着,我们不应该为任何 JS 函数命名一个 ID,看起来很奇怪。一个是ID,另一个是函数。
  • @Dev 你可以访问表单元素作为表单对象的属性,所以如果你有一个表单,比如myForm,并且在表单中输入id或名称为submit,那么myForm.submit将是具有 id 提交的输入元素,而不是原始提交方法。
【解决方案2】:

控制台中的错误是

Uncaught TypeError: Property 'submit' of object #<HTMLFormElement> is not a function 

问题是你通过命名一个元素提交劫持了 sumit() 函数。将按钮的 id 更改为 btnSubmit。

【讨论】:

  • 太棒了!!!这就是重点,但是ID是提交,那怎么劫持JS的提交功能?
  • 做一个console.log(document.forms[0].submit);您将看到该元素被引用而不是提交。 id 将代替名称。因此,为什么您会收到错误消息。切勿使用 id 或名称命名元素的提交。
【解决方案3】:

我已经用解决方案修改了你的代码。

提交按钮的名称丢失。并且不要使用名称作为提交的“提交”。它与JS冲突。

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
    function validate () {
        document.myform.submit();   
    }
    </script>
</head>
<body>
    <form id="myform" name="myform" method="post" action="">
        <input type="button" name="save" value="submit" id="submit" onclick="validate();" >
    </form>
</body>
</html>

【讨论】:

  • 这不起作用。 jQuery 代码没有任何问题。
【解决方案4】:

如果这是您编写的确切代码,那么我认为您没有在页面中包含 jQuery 库。

您需要包含 jQuery 文件才能使用 $("#myform") 表示法。

还指定一些您要将页面提交到的操作 URL 吗?

【讨论】:

    【解决方案5】:

    您使用 jQuery 代码($ 函数),但未包含 jQuery 源代码。

    【讨论】:

    • 我已经发布了 jsfiddle 的链接,请看一下。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-06
    • 1970-01-01
    • 2013-10-10
    • 1970-01-01
    • 1970-01-01
    • 2019-06-18
    • 1970-01-01
    相关资源
    最近更新 更多