Javascript 创建自定义输入字段

Javascript 创建自定义输入字段,javascript,angular,input,Javascript,Angular,Input,我有一个电话屏蔽指令,它屏蔽了美国标准中的电话号码。(000) 000-0000 我用正则表达式做的 但我想在输入字段的焦点上显示这样的输入字段()\uu-\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu),然后我键入。如何制作?制作PhoneMaskDirective constructor(public ngControl: NgControl) { } @HostListener('ngModelChange', ['$event']) onModel

我有一个电话屏蔽指令,它屏蔽了美国标准中的电话号码。(000) 000-0000 我用正则表达式做的


但我想在输入字段的焦点上显示这样的输入字段()\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?