【发布时间】:2018-11-20 00:23:01
【问题描述】:
我正在实施一个指令,以阻止用户在我的 Angular 6 应用程序的输入字段中输入其他字符。并允许非数据输入键,如制表符、德尔、退格等,我有一个带有event.which的if条件@
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();
}
}
}
但是当我想允许更多键盘输入(例如ctrl+ C 或back arrow 或shift + tab 等)时,我的if 条件会变长
当长度超过时,是否有一种更智能的方法来处理我的输入控件上的非数据输入,以便我仍然可以接受非数据键,例如 tab、del、后退箭头等
【问题讨论】:
-
你使用
maxlength="8"attr 输入不是更好的方法吗? developer.mozilla.org/en-US/docs/Web/HTML/Element/input -
看看
pipe。即使这不是完美的情况,无论如何也是解决这个问题的一种方法
标签: javascript html angular typescript