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 事件。不过,您可以取消 keydownkeypress 事件。在文档中,请注意在“事件信息”下,keyup 的“取消”为“否”:

keyup keydown keypress

使用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:防止输入键[重复]的主要内容,如果未能解决你的问题,请参考以下文章

防止“输入”提交表单,但允许在 textarea 字段(jQuery)[重复]

防止用户使用 jQuery 在文本框中输入非数字 [重复]

JQuery:检测输入字段的变化[重复]

防止重复发送ajax请求

完全禁用输入字段[重复]

如何防止按键重复被触发 - JavaScript/jQuery