【发布时间】:2020-11-30 07:25:18
【问题描述】:
我创建了一个自定义指令来只接受数字。它在桌面浏览器和 safari 移动版本中运行良好。但在移动 chrome 版本中无法运行。
任何人都可以在这个问题上帮助我。在此先感谢
这是我的 HTML 和指令
<input NumbersOnly placeholder="{{ 'PlaceHolder.MobileNo' | translate }}" formControlName="mobileNo" maxlength="7" >
import { Directive, ElementRef, HostListener, Input } from "@angular/core";
@Directive({
selector: "[NumbersOnly]",
})
export class NumbersDirective {
// Allow decimal numbers and negative values
private regex: RegExp = new RegExp(/^-?[0-9]+(\[0-9]*){0,1}$/g);
// Allow key codes for special events. Reflect :
// Backspace, tab, end, home
private specialKeys: Array<string> = ["Backspace", "Tab", "End", "Home", "-"];
constructor(private el: ElementRef) {}
@HostListener("keydown", ["$event"])
onKeyDown(event: KeyboardEvent) {
// Allow Backspace, tab, end, and home keys
if (this.specialKeys.indexOf(event.key) !== -1) {
return;
}
if (event.key.match(this.regex) == null) {
event.preventDefault();
return false;
}
}
}
【问题讨论】:
-
不工作意味着什么?它也接受字符?
-
是的,在移动 chrome 浏览器中它接受字符。但在桌面上,这个指令工作正常
标签: regex angular8 angular2-directives mobile-chrome