当我运行
时,我遇到了一个问题
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)"/>
非常感谢任何帮助。我完全卡住了。
答案 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" >
这是粗略描述的,你可能想让它更详细。