【问题标题】:Read character from keypress event从按键事件中读取字符
【发布时间】:2015-05-20 08:46:11
【问题描述】:

我正在尝试使用 jquery 进行 if 语句来检查是否按下了 'abc' 字符。 我希望用正则表达式来做到这一点,而不是像这样检查每个键的键盘代码/ascii char:

$('#main-field').on('keypress, keydown', function(event) {
    if ((event.which != 37 && (event.which != 39)...) {
        code here
    }
}

我知道 event.which 为您提供了每个字符的键盘代码,但是我如何到达按下的字符本身以检查它是否是带有 reg exp 的“abc”字符? 谢谢

【问题讨论】:

    标签: jquery char keypress keydown


    【解决方案1】:

    您可以使用 String.fromCharCode( 65 ) 获取字符 (a-z)。 它是一种静态方法,可将 unicode 数字转换为键盘布局上对应的字符。

    var chars = '';
    $('#main-field').on('keypress, keydown', function(event) {
        var character = String.fromCharCode(event.keyCode).toLowerCase();
        chars += character;
        if (chars == 'abc') {
            alert('abc');
        }
    });
    

    因此,要检查用户是否按该顺序键入了“abc”,您可以将 character 附加到 chars 字符串并将其与“abc”进行比较

    这是fiddle。 请注意,例如 Enter 键将返回一个空字符串,因此您可能需要考虑一个回退。

    【讨论】:

      【解决方案2】:

      您要查找的键码是6590,相当于az。然后您可以检查事件的键码是否在该范围之间。

      另请注意,您不需要在 on 调用中使用逗号分隔事件名称。试试这个:

      $('#main-field').on('keypress keydown', function(event) {
          if (event.which >= 65 && event.which <= 90) {
              // key a-z was pressed, do something here...
          }
      }
      

      您可以找到可用键码列表here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-02-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-03-03
        • 2014-01-17
        相关资源
        最近更新 更多