Маска ввода только для буквенных символов позволяет использовать только 1 слово с Primeng в Angular - PullRequest
0 голосов
/ 25 мая 2020

Как в учебнике сказано «a - Alpha character (defaut: A-Z,a-z)», это нормально.

Но когда я применяю mask="a", как показано ниже, просто позвольте мне ввести 1 слово, но я не хочу ограничивать размер ввода. Так люди могут введите слово любого размера. Как я могу этого добиться?

Я пробовал использовать characterPattern="[А-Zа-z]" или давать обычное свойство шаблона html с обычным выражением, например ^[A-Za-z], но не сработало. Заранее спасибо

<p-inputMask mask="a" [placeholder]="'gerekli' | translate" [(ngModel)]="User.adi"></p-inputMask>

1 Ответ

0 голосов
/ 26 мая 2020

Вы можете реализовать следующее:

В вашем файле component.ts

setInputFilter(inputHTML, inputValue) {
    [
      "input",
      "keyup",
      "keydown",
      "mouseup",
      "mousedown",
      "select",
      "contextmenu",
      "drop"
    ].forEach(function(event) {
      inputHTML.addEventListener(event, function() {
        if (inputValue(this.value)) {
          this.previousValue = this.value;
          this.previousSelectionStart = this.selectionStart;
          this.previousSelectionEnd = this.selectionEnd;
        } else if (this.hasOwnProperty("previousValue")) {
          this.value = this.previousValue;
        }
      });
    });
  }

Вызвать функцию setInputFilter внутри AfterViewInit ловушка жизненного цикла.

ngAfterViewInit() {

    this.setInputFilter(document.getElementById("inputText"), function (value) {

      return /^[a-zA-Z]*$/.test(value);

    })
  }

В вашем компоненте. html файл,

<input id="inputText" pInputText [(ngModel)]="val"/>

Я использую InputTextModule PrimeNG вместо InputMaskModule

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...