按下回车键时禁用表单提交,因为我使用的是 Ajax 功能

Posted

技术标签:

【中文标题】按下回车键时禁用表单提交,因为我使用的是 Ajax 功能【英文标题】:Disable form submission on pressing enter because i am using Ajax functionality 【发布时间】:2011-06-06 13:30:00 【问题描述】:

我正在使用 ajax 功能。当我使用回车键选择任何建议时,表单会自动提交,因为提交按钮是自动聚焦的。有什么方法可以使用 enter 键选择 ajax 建议以及使用 enter 键提交表单。就像我输入所有字段的值然后只启用提交按钮。

【问题讨论】:

【参考方案1】:

如果所有字段都有值,您可以让表单的 onSubmit 返回 true,如果没有,则返回 false

【讨论】:

【参考方案2】:

您可以使用.keypress() 方法检测按下了哪个键。从这里你应该能够return false; 提交表单并在if 声明中做你的ajax 东西:

http://api.jquery.com/keypress/

【讨论】:

我没有使用 jquery 来实现 ajax 功能,所以不能使用 Jquery.keypress() 函数。【参考方案3】:

你是如何调用你的 Ajax 函数的?它应该在表单的submit 事件处理程序中。然后,如果您有事件处理程序返回false,它将无法正常提交:

<form onsubmit="doAjaxSubmit(); return false;">
  ...
</form>

【讨论】:

这似乎不能解决问题,因为在自动完成字段上按回车仍会导致 AJAX 提交。 但我在 onsubmit 调用中使用一种表单验证器方法,如果有 doAjaxSubmit(),我将如何调用此方法。

以上是关于按下回车键时禁用表单提交,因为我使用的是 Ajax 功能的主要内容,如果未能解决你的问题,请参考以下文章

Ajax异步按下回车提交表单

在 Bootstrap 模式窗口中单击 Enter 并点击提交按钮时提交表单数据

只允许提交一次表单

按下回车键,PrimeFaces禁用提交

在 Ajax 应用程序中提交表单时隐藏移动 Safari 键盘

在 ajax 提交时禁用 symfony 2 csrf 令牌保护