如何使我的输入文本字段仅允许字母正确?

时间:2019-05-07 22:31:29

标签: angular

我仅在我的字段中验证文本输入

在我的login.component.ts

letterOnly(event) : Boolean{
    const charCode = (event.which) ? event.which : event.keyCode;
    if ((charCode < 65 || charCode > 90) && (charCode < 97 || charCode > 122)) {
      return false;
    }
    return true;
  }

以及在login.component.html

 <input type="text" matInput placeholder="Usuario" formControlName="userName" (keypress)="letterOnly($event)">

它可以在Windows上运行,但不能在Mac键盘上。

3 个答案:

答案 0 :(得分:0)

您应该使用模式验证器:

<input type="text" matInput placeholder="Usuario" formControlName="userName" ngModel pattern="[a-zA-Z ]*">

第二个选项:

您可以保留“ letterOnly”方法,但使用regex代替比较ASCII。

答案 1 :(得分:0)

这不起作用,因为Mac和Windows之间的ascii表是不同的。

Windows Table

Mac Table

根据您的情况,使用Angular Pattern validation

示例:

<input name="firstName" ngModel pattern="[a-zA-Z ]*">

答案 2 :(得分:0)

您可以通过以下方式更改支票charCode

function letterOnly(event) 
{
            var charCode = event.keyCode;

            if ((charCode > 64 && charCode < 91) || (charCode > 96 && charCode < 123) || charCode == 8)

                return true;
            else
                return false;
}