Javascript 创建自定义输入字段
我有一个电话屏蔽指令,它屏蔽了美国标准中的电话号码。(000) 000-0000 我用正则表达式做的Javascript 创建自定义输入字段,javascript,angular,input,Javascript,Angular,Input,我有一个电话屏蔽指令,它屏蔽了美国标准中的电话号码。(000) 000-0000 我用正则表达式做的 但我想在输入字段的焦点上显示这样的输入字段()\uu-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu),然后我键入。如何制作?制作PhoneMaskDirective constructor(public ngControl: NgControl) { } @HostListener('ngModelChange', ['$event']) onModel
但我想在输入字段的焦点上显示这样的输入字段()\uu-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu),然后我键入。如何制作?制作
PhoneMaskDirective
constructor(public ngControl: NgControl) { }
@HostListener('ngModelChange', ['$event'])
onModelChange(event) {
this.onInputChange(event, false);
}
@HostListener('keydown.backspace', ['$event'])
keydownBackspace(event) {
this.onInputChange(event.target.value, true);
}
onInputChange(event, backspace) {
let newVal = event.replace(/\D/g, '');
if (backspace && newVal.length <= 6) {
newVal = newVal.substring(0, newVal.length - 1);
}
if (newVal.length === 0) {
newVal = '';
} else if (newVal.length <= 3) {
newVal = newVal.replace(/^(\d{0,3})/, '($1)');
} else if (newVal.length <= 6) {
newVal = newVal.replace(/^(\d{0,3})(\d{0,3})/, '($1) ($2)');
} else if (newVal.length <= 10) {
newVal = newVal.replace(/^(\d{0,3})(\d{0,3})(\d{0,4})/, '($1) ($2)-$3');
} else {
newVal = newVal.substring(0, 10);
newVal = newVal.replace(/^(\d{0,3})(\d{0,3})(\d{0,4})/, '($1) ($2)-$3');
}
this.ngControl.valueAccessor.writeValue(newVal);
}
构造函数(公共ngControl:ngControl){
@HostListener('ngModelChange',['$event']))
onModelChange(事件){
此.onInputChange(事件,false);
}
@HostListener('keydown.backspace',['$event']))
keydownBackspace(事件){
此.onInputChange(event.target.value,true);
}
onInputChange(事件,退格){
让newVal=event.replace(/\D/g');
如果(backspace&&newVal.length,则可以使用此库:
您只需在.ts文件中配置掩码:
config = {
mask:['(', /\d/, /\d/, /\d/, ')', ' ', /\d/, /\d/, /\d/, '-', /\d/, /\d/, /\d/, /\d/],
guide: true,
showMask: true
}
在模板中:
<input [textMask]="config" [(ngModel)]="myModel" type="text"/>
您可以在此处看到一个工作示例:
在此处发布您尝试过的代码。如果可能,也可以通过在…中创建工作示例来发布链接。您尝试过什么?请参见此处..我已经完成了部分..我希望输入字段为(\uuuuu)当用户聚焦输入字段时,嘿,谢谢你…angular-tmwana.stackblitz.io请看这里..我已经完成了部分…我希望输入字段是(uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu?