我正在实现一个指令,以阻止用户在我的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();
}
}
}
但是当我想允许更多的键盘输入,例如if
或ctrl+ C
或back arrow
等时,我的shift + tab
情况就变得更长了
当长度超过时,是否有一种更聪明的方式在输入控件上处理此非数据输入,因此我仍然可以接受非数据键,例如tab,del,后退箭头等
答案 0 :(得分:0)
我的非纯角度命题(仅允许使用字母数字键):
<input type="text" onkeydown="return /[a-z0-9]/i.test(event.key)" [attr.maxlength]="maxLength">