【问题标题】:Combine keypress and keyup - jQuery结合 keypress 和 keyup - jQuery
【发布时间】:2012-06-06 03:04:15
【问题描述】:

我正在尝试开发一个 jQuery 插件来在用户输入特定关键词时执行操作。

例如,我想在 keyup 上匹配“HELLO”。

var controllerKey = [];
$(window).keyup(function(evt) {
    var code = evt.keyCode ? evt.keyCode : evt.which;
    controllerKey.push(code);
}
[...]

然后,我将我的 controllerKey 与我的字符串“HELLO”(感谢 str.charCodeAt())和其他一些东西进行比较,但这在这里并不重要。 此时一切正常。

我的问题发生在我想匹配“HeLLo”时(事实上,当字符串有一些大写时)。我在论坛上看到 keyup 或 keydown 没有任何区别。

所以我使用 keypress 来很好地管理它,但是 keypress 不允许我匹配箭头键等等(在 Chrome 中)。

我想知道是否可以组合 keypress 和 keyup(仅当 keypress 与事件不匹配时)。

提前致谢。

【问题讨论】:

  • 他们是否在输入中输入了这个短语?您还提到您的问题是比较不同情况的字符串,然后您要询问 keypress 和 keyup?
  • 没有。这是一个类似于“konami 代码”但使用您选择的密码的插件。我将第一个字符串(关键短语)与用户输入进行比较
  • 我觉得我太老了,不知道什么是 konomi 代码,但是我已经为您提供了一个关于结合这两个事件的答案..
  • 你可以在这里试试:konamicodesites.com 按以下键:“上/上/下/下/左/右/左/右/B/A”
  • 好的,我现在明白了,只是不知道名字.. 让我想起了当年的突击队。 +1 教我那个!

标签: jquery keypress keydown keyup


【解决方案1】:

你可以这样组合它们:

$(window).on('keyup keypress', function(e) {
   if (e.type=="keyup") {

   } else {
      // it is keypress
   }
});

【讨论】:

  • 因此您可以通过 s.toUpperCase() == t.toUpperCase() 轻松比较字符串
  • 您的回答会对我有所帮助。谢谢。 (我不想使用大写进行比较,因为我想保留此信息)
【解决方案2】:

您可以使用隐藏输入按键事件来进行跨浏览器区分大小写的比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-19
    • 2021-12-08
    • 1970-01-01
    • 2014-02-13
    • 1970-01-01
    • 2011-03-23
    相关资源
    最近更新 更多