通过触发“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/
答案 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>
答案 1 :(得分:0)
非常糟糕的错误。我在小提琴中写了document.keypress
而不是document.onkeypress
(该片段是正确的)。
工作解决方案:
'use strict';
(() => {
document.onkeypress = ev => false;
})();