angular 8仅接受数字自定义指令在台式机浏览器中工作,但不适用于移动chrome浏览器

如何解决angular 8仅接受数字自定义指令在台式机浏览器中工作,但不适用于移动chrome浏览器

我创建了一个自定义指令,仅接受数字。在桌面浏览器和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,and home keys
    if (this.specialKeys.indexOf(event.key) !== -1) {
      return;
    }
    if (event.key.match(this.regex) == null) {
      event.preventDefault();
      return false;
    }
  }
}

解决方法

我看到您错过了正则表达式中的点。您不需要g修饰符,因为整个字符串必须匹配。

使用

private regex: RegExp = /^-?[0-9]+(?:\.[0-9]*)?$/;

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?