【问题标题】:why result of `charCodeAt(0)` and `e.keyCode` don't match?为什么 `charCodeAt(0)` 和 `e.keyCode` 的结果不匹配?
【发布时间】:2013-11-13 06:08:44
【问题描述】:

任何想法为什么charCodeAt(0)e.keyCode 的结果不匹配?以及如何解决这种情况?

var stop_symbols = $("#words_stop_symbols span").text().split('').map(function (val) {return val.charCodeAt(0);});
    console.dir(stop_symbols);
    //
    $(document).on("keydown", ".quick-edit", function(e) {
        console.dir(e.keyCode);
        if ($.inArray(e.keyCode,stop_symbols) != -1) {
            // 
            console.dir("blocked char")
            return false;
        }
    });

【问题讨论】:

  • 投反对票的原因是? ...
  • 不知道,投票也差不多。这听起来像是一个合法的问题,尤其是在没有重复的情况下。
  • @adeneo 对不起,我真的不知道他们对不同的事件有不同的keyCodes,我很抱歉。

标签: javascript jquery


【解决方案1】:

使用按键事件将起作用:

$(document).on("keypress", ".quick-edit", function (e) {
    if ($.inArray(e.keyCode, stop_symbols) != -1) {
        return false;
    }
});

FIDDLE

【讨论】:

  • @salivan - 在我看来,其他人有不同的意见并否决了我的答案,至少在我将小提琴发布为“证明”之前,但这确实可以作为按键事件并且 charCodeAt 应该返回与传递的字符完全相同的表示形式(keyup 和 keydown 不会)。
  • 我将代码更改为: $.inArray(String.fromCharCode(e.keyCode),stop_symbols 但在我使用按键之前,它给了我同样的错误结果。所以你有答案了。谢谢!
猜你喜欢
  • 2018-07-14
  • 2022-11-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-25
  • 2014-12-05
  • 1970-01-01
相关资源
最近更新 更多