不与Angular2一起使用的Android KeyUp,KeyDown和KeyPress事件

时间:2017-09-11 21:32:04

标签: javascript android html angular events

当我运行

时,我遇到了一个问题

deasync

我总是在android chrome浏览器中得到一个229的keyCode,我知道在堆栈溢出时已经多次提到过了,我已经看到了建议使用

<input type="text" (keydown)="testKeyCodes($event)"/>
<!-- or -->
<input type="text" (keyup)="testKeyCodes($event)"/>

代替。问题是,Android手机没有触发按键事件。有人找到了解决方案吗?

我的最终目标是防止Android浏览器上的用户在我的字母数字输入中输入特殊字符。

以下是我要检查的正则表达式。

<input type="text" (keypress)="testKeyCodes($event)"/>

非常感谢任何帮助。我完全卡住了。

1 个答案:

答案 0 :(得分:0)

我会编写一个使用自定义验证器监听input事件的指令,如下所示:

....
@HostListener('input',['$event']) 
    onInput($event){
      let newValue = this.el.nativeElement.value;
      ...   
      let patternValidation=newValue.match(myPattern); //replace here with your regexp

      if(patternValidation){
         //keep input
      } else {
         //exclude input
         newValue = patternValidation;
      }

      this.model.control.setValue(newValue);
  }

  <input myDirective [(ngModel)]="value" name="value" >

这是粗略描述的,你可能想让它更详细。