如何使用jquery禁用输入时提交,保留附加的其他功能以完整输入

Posted

技术标签:

【中文标题】如何使用jquery禁用输入时提交,保留附加的其他功能以完整输入【英文标题】:How to disable submit on enter with jquery leaving the other functionality attached to enter intact 【发布时间】:2012-08-21 06:12:30 【问题描述】:

jquery disable form submit on enter 应该已经回答了这个问题,但这个问题的答案似乎对我不起作用 - 当我在输入文本字段中按 Enter 键时,会发生三件事:

    该字段的更改事件被触发。 表单已提交。 最终触发上述答案中描述的 keyup 事件处理程序。

现在,我可以用 keydown 替换 keyup ,然后真的不会触发提交。但该字段的更改事件也没有。

互联网上有很多链接,但大多数都在谈论复杂的场景,比如禁用 if 和 when 等...

我只想在输入时禁用提交,仅此而已。

我使用的是 jquery 1.8.0

谢谢。

编辑

我想澄清一下。我确实希望在用户单击提交输入按钮时发生提交。我只是不希望它在进入时发生。

<form id="invoiceForm">
  ...
  <input type="submit"/>
</form>

EDIT2

http://jsfiddle.net/mark69_fnd/akZG4/ - 如果提交被触发,应该会看到消息

"error": "Please use POST request"

我不想在输入时看到此消息。仅当实际点击提交时。

EDIT3

我将小提琴更改为实际提交空白页并在提交时发出警报。

EDIT4

我想阻止在文本输入字段中按回车键时提交表单的默认操作。但我确实想保留文本输入的自然行为 - 触发更改事件。

【问题讨论】:

您实际何时提交表单?仅按按钮?请发布一些代码 【参考方案1】:

在类似的情况下,我使用了这个:

html

<input name="my_text" onkeypress="disableSubmit(this, event)" />

JS:

function disableSubmit(elem, event) 
    if (event.which == 13)  
        event.preventDefault();
        $(elem).blur();
        return false;
    

所以基本上是为了触发模糊 - 所以当输入发生变化时 - 也会触发 change 事件。当然副作用是输入失去焦点。但从我们的使用场景来看,还可以。

【讨论】:

以上是关于如何使用jquery禁用输入时提交,保留附加的其他功能以完整输入的主要内容,如果未能解决你的问题,请参考以下文章

提交后如何禁用输入字段

如何在提交后禁用输入字段

当使用 PHP 在后端验证电子邮件时,如何将输入提交从禁用更改为启用?

Javascript:单击提交按钮时如何将隐藏的输入标签附加到表单中?

仅在 _some 字段上通过 Enter 键禁用表单提交

使用 jq 保留键名展平 JSON