如何防止表情符号快捷方式

时间:2017-05-09 08:09:59

标签: javascript html google-chrome microsoft-edge emoji

通过触发“alt + 1”,“alt + 2”等快捷方式,我遇到阻止浏览器在“textarea”和“input”元素中创建表情符号的问题。

此代码禁止与所述元素进行任何交互,但“alt + 1”仍然会创建表情符号。在Chrome和Edge上测试过。我错过了什么吗?

'use strict';
(() => {
  document.onkeydown = document.onkeypress = document.onkeyup = ev => {
    ev.stopPropagation();
    ev.preventDefault();
    return false;
  }
})();

https://jsfiddle.net/9Lr0hays/1/

注意:我不想直接与元素交互(使用选择器)。

我在谈论这些符号: http://www.alt-codes.net/

相关:Disable Alt Codes/Characters with JavaScript

2 个答案:

答案 0 :(得分:1)

此问题的一种可能解决方案是检查密钥代码。

<input type="text" id="number" onkeypress="return iskey(event);" />
<script>
function iskey(evt) {
    var theEvent = evt || window.event;
    var theVal = theEvent.target.value;
    var key = theEvent.keyCode || theEvent.which;

    key = String.fromCharCode(key);

    if (key.length == 0) return;
        if (theEvent.preventDefault) theEvent.preventDefault();
        return false;
}
</script>

在此工作:https://jsfiddle.net/1569atLz/23/

答案 1 :(得分:0)

非常糟糕的错误。我在小提琴中写了document.keypress而不是document.onkeypress(该片段是正确的)。

工作解决方案:

'use strict';
(() => {
  document.onkeypress = ev => false;
})();

https://jsfiddle.net/9Lr0hays/3/