jQuery:防止输入键[重复]
Posted
技术标签:
【中文标题】jQuery:防止输入键[重复]【英文标题】:jQuery: Prevent enter key [duplicate] 【发布时间】:2011-06-12 20:01:45 【问题描述】:我试图阻止 enter 键被放入文本区域,但它似乎不起作用。
$('#comment').keyup(function(event)
if (event.text.charCodeAt() == '10')
event.preventDefault();
);
【问题讨论】:
我不认为该事件正在触发,我如何判断$('#comment')
是否正确地成为我想要的?
请记住挂钩到更改事件以及其他人显示的键上/下/按下。对于这里的每个解决方案,人们仍然可以将换行符粘贴到文本区域中,以防止您需要删除它们;)
【参考方案1】:
我在jsfiddle.net上写了小演示,你可以试试这段代码
每个人都有正确的答案:)
$('#comment').keypress(function (event)
if (event.keyCode === 10 || event.keyCode === 13)
event.preventDefault();
);
【讨论】:
@Bubby LOL 接受了将别人的代码复制粘贴到 jsfiddle 中的答案? 作为注释;需要 keyCode 10,因为 iPhone 上的 Safari 在按下回车键时会发送 keycode 10 @Ben 当我测试它发送 13 而不是 10 时。有关于此的任何文件吗?我找不到。 @Sangdol 应该有一些关于标准键码的文档;但是 10 和 13 都需要,因此使用 OR 运算符 你可以用which
代替keyCode
。【参考方案2】:
您无法取消keyup
事件。不过,您可以取消 keydown
和 keypress
事件。在文档中,请注意在“事件信息”下,keyup
的“取消”为“否”:
使用keydown
可以让您取消比keypress
更多的键,但是如果您不想在取消键之前取消,keypress
就是您想要的。幸运的是,回车键是keypress
事件的可取消键之一。
【讨论】:
【参考方案3】:在keydown
事件中使用event.keyCode
:
$('#comment').keydown(function(event)
if(event.keyCode == 13) return false;
//carry on...
);
【讨论】:
@Šime Vidas 我猜你可以使用keydown
事件。【参考方案4】:
$('#comment').keypress(function(event)
if (event.keyCode == 13)
event.preventDefault();
);
【讨论】:
什么? Enter 键的键码是13
,而不是10
。
10 是 LF(换行),13 是 CR(回车)。他应该阻止两者。
@TomislavMarkovski:不。keyCode 是 always 13。参见例如unixpapa.com/js/key.html【参考方案5】:
虽然此处提供的答案会阻止某人输入回车,但不会阻止某人粘贴回车。
您需要对文本进行一些后期处理(在 javascript 或服务器端)才能删除它们。
http://jsfiddle.net/we8Gm/
但问题是,为什么?为什么不简单地使用<input type="text"></input>
,因为它是一个单行输入元素,它会自动处理这个问题?
【讨论】:
因为我需要盒子高而不是宽。宽度只有 50 像素。 现在我很好奇你会用一个又高又瘦的输入来做什么。 我设计的Ajax聊天小部件,用户可以按回车键提交消息。【参考方案6】:尝试使用.keypress
并使用return false
;
祝你好运!
【讨论】:
以上是关于jQuery:防止输入键[重复]的主要内容,如果未能解决你的问题,请参考以下文章