【问题标题】:Check if keydown event for umlaute检查是否为变音符号的keydown事件
【发布时间】:2012-12-10 10:51:06
【问题描述】:

我想通过eventListener 检查按下的键是否是变音符号(äöü)。问题是 charCode/keyCode 始终为 0,如果我没记错的话,该值也用于某些控制键。

我尝试将keyDowne.which 解析为我可以使用的东西,但直到现在似乎没有任何效果。如果我能做类似'ä'.atCharCode() 这样的事情就好了。

有什么帮助吗? :) 或者检查0 是否安全且安全?

【问题讨论】:

  • 更新: 实际上这个问题只出现在 Firefox 上。在 Chrome 中,变音符号的 charCode 是正确的......

标签: javascript char dom-events keycode


【解决方案1】:

Firefox 对这些特定字符使用键码 0。对于所有其他浏览器,它是 186、192 和 222。

例如,如果您想检查是否按下了字母键 + 变音符号,我使用以下代码:

$('.myInputBox').keydown(function(e) {
    if ($.inArray(e.keyCode, [0, 186, 192, 222]) != -1 || (e.keyCode > 64 && e.keyCode < 91)) {  
        alert('valid key!');
    } else {
        e.preventDefault();
        alert('no valid key!');
    }
});

【讨论】:

    【解决方案2】:

    发现问题。在 Chrome 中,一切都很好,并且变音符号得到了正确的 charCode。另一方面,在 Firefox 中,似乎没有真正支持变音符号,并且它们的 charCode 始终为 0。我测试的 FF 是 17.0.1

    所以如果你想解决这个问题,你必须不允许有e.keyCode/e.which0 的事件。

    【讨论】:

      【解决方案3】:
      <script type="text/javascript">
              function disablekeys(e) {
                  var e = event || evt;
                  var charCode = e.which || e.keyCode;
                  if (charCode = 8) {
                      //your code here
                  }
              }
      </script>
      

      从以下链接查找字符代码 http://www.expandinghead.net/keycode.html

      【讨论】:

      • 我知道该抓谁。但我对 FF 中的 b/c 感到困惑,代码等于零。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多