如何使用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 在后端验证电子邮件时,如何将输入提交从禁用更改为启用?