Добавление пробела после каждого третьего числа во вводе - PullRequest
0 голосов
/ 07 августа 2020

Я хочу добавить пробел после каждого третьего числа, но этот код не работает, если введено type="number". Кто-нибудь знает, как изменить код, чтобы он работал даже для type="number"? Вот мой ввод:

<input type="number" id="phone" autocomplete="off" placeholder="(+420)">

А также вот сценарий:

<script>
document.getElementById('phone').addEventListener('input', function (e) {
    e.target.value = e.target.value.replace(/[^\dA-Z]/g, '').replace(/(.{3})/g, '$1 ').trim();
});
</script>

1 Ответ

0 голосов
/ 07 августа 2020

Попробуйте следующее:

function insertBlankAfterEveryThreeCharacters(str) {
  var str=str.split(" ").join("").split("");
  var formatted=[];
  while(str.length) {
    for(var i=0; i<3 && str.length; i++) {
      formatted.push(str.shift());
    }
    if(str.length) formatted.push(" ");
  }
  return formatted.join("");
}

Используйте в своем мероприятии:

this.value=insertBlankAfterEveryThreeCharacters(this.value);

document.getElementById('phone').addEventListener('input', function (e) {
  this.value=insertBlankAfterEveryThreeCharacters(this.value);
});

function insertBlankAfterEveryThreeCharacters(str) {
  var str=str.split(" ").join("").split("");
  var formatted=[];
  while(str.length) {
    for(var i=0; i<3 && str.length; i++) {
      formatted.push(str.shift());
    }
    if(str.length) formatted.push(" ");
  }
  return formatted.join("");
}
<input id="phone">

<input type="number"... делает так, что вы можете go вверх / вниз = Я предполагаю, что это не предполагаемый результат ... У вашего заполнителя есть круглые скобки и плюс - это не то, чего вы, кажется, хотите в решении ...

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