在angular应用中达到最大长度时如何防止输入字段上出现其他字符

时间:2018-11-19 16:13:36

标签: javascript html angular typescript

我正在实现一个指令,以阻止用户在我的angular 6应用程序的输入字段中键入其他字符。并允许使用非数据输入键(例如tab,del,backspace等),并且我将if条件设为event.which

export class MaxLengthDirective {

maxLength: number;

constructor(private el: ElementRef, private ngControl: NgControl) {}

@HostListener('keydown', ['$event'])
onKeyDown(event) {
 const element = this.el.nativeElement;
 if (element.value.length >= this.maxLength) {
  if (event.which !== 8 && event.which !== 9 && event.which !== 46)
    event.preventDefault();
  }
 }
}

但是当我想允许更多的键盘输入,例如ifctrl+ Cback arrow等时,我的shift + tab情况就变得更长了

当长度超过时,是否有一种更聪明的方式在输入控件上处理此非数据输入,因此我仍然可以接受非数据键,例如tab,del,后退箭头等

1 个答案:

答案 0 :(得分:0)

我的非纯角度命题(仅允许使用字母数字键):

<input type="text" onkeydown="return /[a-z0-9]/i.test(event.key)" [attr.maxlength]="maxLength">
相关问题