【问题标题】:keyCode displaying incorrect code value in AngularjskeyCode 在 Angularjs 中显示不正确的代码值
【发布时间】:2015-05-09 00:30:11
【问题描述】:

我正在努力捕获按下的按键,以便与 API 一起使用以获得模糊搜索结果。

无论如何,我正在使用此代码来捕获标记和指令控制器中的按键:

<input type="text"
       placeholder="Search"
       ng-click="searchPop($event)"
       ng-keypress="typingMainSearch($event)">

vs.typingMainSearch = function(e) {
    console.log(e.keyCode);
    vs.searchPopoverDisplay = true;
};

但是,当我输入a 时,我得到97,当我输入b 时,我得到98


当我将它们与我在网上看到的任何地方进行比较时,这些值都不正确。

http://www.cambiaresearch.com/articles/15/javascript-char-codes-key-codes

Is it possible to listen for arrow keyspress using ng-keypress?

http://jsfiddle.net/YKeye/

为什么会这样? a 应该是 65b 应该是 66

 var key = {
      'a': 65,
      'b': 66,
      'c': 67,
      'd': 68,
      'e': 69,
      'f': 70,
      'g': 71,
      'h': 72,
      'i': 73,
      'j': 74,
      'k': 75,
      'l': 76,
      'm': 77,
      'n': 78,
      'o': 79,
      'p': 80,
      'q': 81,
      'r': 82,
      's': 83,
      't': 84,
      'u': 85,
      'v': 86,
      'w': 87,
      'x': 88,
      'y': 89,
      'z': 90
  }

【问题讨论】:

  • 小点,与问题无关,但在处理程序中调用 event 对象 key 会造成混淆。如果您包含 jQuery,请尝试 key.which 作为比较
  • 检查你的大写锁定
  • 哦,好吧,所以我打开了 CAPS LOCK,现在它给了我正确的值 :( 嗯,你们是如何解决这个问题的?人们没有输入完整的大写字母
  • 大声笑,我实际上只需要使用ng-model 而不必依赖这个数组/对象&lt;input type="text" ng-model="searchInput" 然后每当我遇到keyUp 事件时,我只需检查那个模型大声笑.. .

标签: javascript angularjs keycode


【解决方案1】:

我认为您正在寻找的是ng-keyup,这对您有用:

<input type="text"
       placeholder="Search"
       ng-click="searchPop($event)"
       ng-keyup="typingMainSearch($event)">

根据Mozilla,keypress 的keyCode 属性已弃用。

另外 - 这就是为什么您在单击“a”时看到 97 的原因(取自 Mozilla 链接):

键的Unicode参考号;

你可以找到unicode编号表here.

【讨论】:

    猜你喜欢
    • 2019-08-05
    • 2015-01-16
    • 2014-09-07
    • 2019-12-17
    • 2011-11-25
    • 1970-01-01
    • 2014-02-27
    • 1970-01-01
    • 2015-10-01
    相关资源
    最近更新 更多