为啥 jQuery 不提交这个表单?

Posted

技术标签:

【中文标题】为啥 jQuery 不提交这个表单?【英文标题】:Why won't jQuery submit this form?为什么 jQuery 不提交这个表单? 【发布时间】:2012-05-26 11:06:38 【问题描述】:

我正在尝试使用 jQuery 提交一个表单,但我必须遗漏一些小东西,因为我无法让它工作,而且从我看到的一切来看它应该可以正常工作。

这是怎么回事?

<table class="newrecord"><form id="editthis" action="page.php" method="post">       

    <tr><td class="left">Name:</td><td><input type="text" name="name" id="name" /></td></tr>
    <tr><td class="left">Company:</td><td><input type="text" name="company" /></td></tr>
    <tr><td class="left"><a href="?action=browse">Cancel</a></td><td><input type="button" name="submit" class="subbut" id="subthis" value="Update" /></td></tr>

</form></table>

还有 javascript

    $("#subthis").click(function() 
        $('#editthis').submit(); // An alert box works, so I know this is triggering
    );

正如代码中提到的,如果我单击提交按钮,则会出现一个警告框,但是当我使用 jQuery 提交功能时,什么也没有发生。我错过了什么???

【问题讨论】:

为什么需要在 document.ready 上提交自己的表单?编辑:我没有注意到事件绑定。精疲力尽时不得阅读SO。经验教训 您是否尝试过将form 标签放在 table 标签之外,以便获得有效的html? This SO article might be related @CengizCan - 表单未自行提交。当文档准备好时,代码会附加click 事件。 【参考方案1】:

您不需要使用 jQuery 来提交表单。提交按钮提交其所属的表单是默认行为。

另外,不要使用表格进行布局。表单元素本身可以很好地布局。

<form id="edit_this" action="page.php" method="POST">
    <label>Name <input type="text" name="name"></label>
    <label>Company <input type="text" name="company"></label>
    <a href="?action=browse">Cancel</a>
    <button type="submit">Update</button>
</form>

可以轻松布局并自行提交。

如果您需要在使用 jQuery 提交之前发生某些事情,请将其绑定到表单的 onsubmit 处理程序,而不是实际单击按钮。


实际的问题是您为按钮指定的名称与 JavaScript 中的保留字之间的冲突。不要使用submit 作为名称。

【讨论】:

我知道我不需要,但是我还有一些其他的事情我想用 jquery 处理这个表单,我只是把它归结为准系统,直到我能解决这个问题。 【参考方案2】:

我看到两个可能的问题。

1) 您在table 标签内有form 标签。虽然这可能不是问题的根本原因,但它不是有效的 HTML。

2) 您使用“提交”作为提交按钮的name。应该避免这种情况,因为您的对象会与 JavaScript 保留字发生冲突。像使用 id 属性一样使用“提交”以外的其他内容。

【讨论】:

在进行故障排除时,我已将表格移至表格内。 #2 是它!我重命名了按钮,它可以工作。谢谢!!! 太棒了!请务必接受最适合您的解决方案的答案。 谢谢。没想到上面有计时器。

以上是关于为啥 jQuery 不提交这个表单?的主要内容,如果未能解决你的问题,请参考以下文章

Rails - 为啥远程提交我的表单后 jQuery 不加载

使用 jQuery 提交表单并使用 PHP 发送.. 不知道为啥它不发送

为啥没有提交表单?

jQuery ajax post提交本页面处理,为啥提交后URL还携带参数

怎么使用jquery提交表单

jquerymobile怎么提交表单没有反应