Как обрабатывать возврат с помощью libphonenumber AsYouTypeFormatter - PullRequest
0 голосов
/ 04 октября 2018

Я пытаюсь использовать google-libphonenumber AsYouTypeFormatter с простым элементом ввода в веб-форме.Каждый ключ, введенный пользователем, я передаю методу inputDigit.Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователь нажимает клавишу Backspace, google-libphonenumber не удаляет последнюю цифру и просто добавляет Backspace к номеру телефона.Я неправильно использую AsYouTypeFormatter?Разве он не способен справиться с возвратами?Если это так, и я подозреваю, что это так, как я должен обрабатывать случай, когда пользователь нажимает клавишу Backspace?

Вот ссылка на пример проекта: https://stackblitz.com/edit/libphonenumber

А воткод:

import { AsYouTypeFormatter } from 'google-libphonenumber';

const appDiv: HTMLElement = document.getElementById('app');
appDiv.innerHTML = `
  <h1>Libphonenumber Playground</h1>
  <input id="input" type="text">
`;

this.formatter = new AsYouTypeFormatter('us');

const input = document.getElementById('input') as HTMLInputElement;

input.addEventListener('keyup', (event: KeyboardEvent) => {
  console.log(this.formatter.inputDigit(event.key));
});

1 Ответ

0 голосов
/ 04 июля 2019

"isNumber": function(evt) {
    evt = (evt) ? evt : window.event;
    var charCode = (evt.which) ? evt.which : evt.keyCode;

if ((charCode > 31 && (charCode < 48 || charCode > 57) || charCode === 46 || charCode === 13)) {
    //do not allow non numeric characters 
    evt.preventDefault();
}else{
    //ok: numeric character
    //handle phone number masking.
    this.phoneNumberForm =this.formatter.inputDigit(evt.key);
}

Я не нашел методов, которые могли бы переместить индекс форматера обратно.(Это не значит, что их там нет) То, что я сделал, это предотвратило событие нажатия клавиши Backspace.Наряду с любым другим нечисловым символом.Вот функция, которую я использовал:

...