无法使用jquery提交表单

时间:2015-10-28 04:35:04

标签: javascript jquery html

我有以下脚本,它只是我实际代码的一个示例,但它的行为与实际代码相同:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form action="http://google.com/">
        <input type="text" name="item_name" />
        <input type="hidden" name="submit" value="save" />
        <a href="" id="save">Submit</a>
    </form>
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script>
        jQuery(function($){
            $('#save').on('click', function(e){
                e.preventDefault();

                $('form').submit();
            });
        });
    </script>
</body>
</html>

你可以看到,a标签带有id save,当点击此链接时,表单应该提交,但它没有。这是由名称为submit的隐藏输入引起的,如果我更改名称,它就会很好用。

在linux上的chrome和firefox上试过这个。谁能解释一下呢?

这是fiddle

- 编辑 -

我尝试使用原生点击事件:

document.getElementById('save').onclick = function(e){
    e.preventDefault();
    document.getElementsByTagName('form')[0].submit();
}

形式也不能提交。

4 个答案:

答案 0 :(得分:2)

我认为这与此问题相同: TypeError: e[h] is not a function

有一个名为submit的输入会添加&#34;提交&#34;属性到表单,意味着你不能将.submit()作为函数调用。

您应该将隐藏的输入命名为其他内容。

答案 1 :(得分:0)

您的HTML应如下所示。

axes[i,j].scatter(...)

您可以使用触发器修复它(&#39;提交&#39;)

<form  action="index.php">
    <input type="text" name="item_name" />
    <a href="#" id="save">Submit</a>
</form>

JsFiddle

答案 2 :(得分:0)

  

这是jQuery Naming模糊问题。你不应该声明任何   表单元素名称id submit在调用时冲突重复引用。

当用户尝试提交表单时,会将提交事件发送给元素。它只能附加到<form>元素。可以通过点击明确的<input type="submit"><input type="image"><button type="submit">或在某些表单元素具有焦点时按Enter键来提交表单。

  

根据浏览器的不同,Enter键可能只会生成表单   提交,如果表单只有一个文本字段,或仅在那里   是一个提交按钮。界面不应该依赖于   此密钥的特定行为,除非强制该问题   观察按下Enter键的按键事件。

  • 由于.submit()方法只是.on( "submit", handler )的简写,因此可以使用.off( "submit" )

  • 进行分离。
  • 表单及其子元素不应使用与表单属性冲突的输入名称或ID,例如submitlengthmethod名称冲突可能导致令人困惑的失败。

答案 3 :(得分:0)

您需要更改&#34;提交&#34;输入按钮的名称。别的东西。有一个名为&#34的元素;提交&#34;导致表单的提交方法不再起作用,这意味着表单无法通过JavaScript提交(至少不容易)。

这是因为一个名为&#34;提交&#34;的输入元素。可以像这样引用它的名称:form1.submit。也就是说,input元素被添加为表单对象的属性,属性名称是input元素的名称。这基本上隐藏了表单原型上的提交功能。