键盘代码229。不适用于preventDefault

时间:2018-08-01 02:34:24

标签: javascript

我正在使用有关angular的指令,并且有输入。此输入应仅接受数字和一个逗号。一切看起来都不错,但是当我单击键代码229时,即使我使用以下代码进行验证,该字符也会添加到我的输入中;

@HostListener('keydown', ['$event']) 
onkeydown(event: KeyboardEvent) {
 if(event.keyCode === 229){
  event.preventDefault();
 }
}

2 个答案:

答案 0 :(得分:1)

代替使用

event.preventDefault();

尝试使用

killEvent(e); 

答案 1 :(得分:1)

在大多数情况下,键码229不是真正的键码; it is what is sent out when the input method editor is processing key input 。处理完成后,将触发 real 键码。除非您正在处理斯堪的纳维亚语言(键映射到å),否则您不必担心229,而只需处理所需的值(0-9和逗号)即可。 ):

if ((event.keyCode >= 48 && event.keyCode <= 57) || (event.keyCode >= 96 && event.keyCode <= 105)) || event.keyCode == 188) { 
  // Only accept 0-9 and commas
}