Удаление лишних точек из числа

86
05 июля 2021, 22:00

Разрешен ввод в input только одной точки. Пытаюсь удалять из числа лишние точки, если их вводят.

Код:

document.querySelector('.inputTest').addEventListener('keyup', function() { 
  // Регулярные выражения: 
  var re = /,/g 
  var re_2 = /\./g 
 
  // Для замены запятой на точку 
  if(this.value.match(re)){ 
    this.value = this.value.replace(re, '.') 
  } 
 
  // Если кол-во точек превысило более 1 шт. 
  if(this.value.match(re_2) && this.value.match(re_2).length >= 2){ 
    this.value = this.value.substr(0, this.value.lastIndexOf('.')) 
  } 
})
* { 
  box-sizing: border-box; 
} 
.inputTest { 
  width: 100%; 
  padding: 10px; 
}
  <input class="inputTest" type="text" value="" placeholder="Число" />

При вводе одной точки всё хорошо, если ввести вторую точку (или более) за уже имеющейся точкой в конце числа - успешно обрезаются лишние точки и остается только одна. Пример:

// 555. => начальное число; 555... => после ввода лишних точек => 555. => Итог

Проблема заключается в следующем: если точка уже присутствует в числе и дополнительно ввести еще одну точку (или более) до имеющейся точки - обрезается всё справа от неё. Пример:

// 555.00 => начальное число; 55.5.00 => после ввода лишней точки => 55.5 => Итог

Необходимо, чтобы оставалась только одна точка в числе, а справа от введенной лишней точки ничего не удалялось - только лишняя точка удалялась, ну или лишние точки, если их введут много. При вводе запятой, пожалуйста, учтите. Пример:

// 555.00 => начальное число; 55.5.00 => после ввода лишней точки => 555.00 => Итог
// 555.00 => начальное число; 55...5.00 => после ввода лишних точек => 555.00 => Итог
// 555.00 => начальное число; 55,5.00 => после ввода запятой => 555.00 => Итог

Пытался сделать так:

this.value = this.value.replace(/\./g, '')

Вместо:

this.value = this.value.substr(0, this.value.lastIndexOf('.'))

Не работает.

P.S. Input у меня разрешает только ввод чисел, запятой и точки.

READ ALSO
canvas отрисовка сохраненных координат

canvas отрисовка сохраненных координат

Есть приложение по выделению областей полигонами, пользователь может сохранять координаты в localStorage и по нажатию кнопки отрисовывать их снова

91
Как сделать анимацию эффект рандома?

Как сделать анимацию эффект рандома?

Как сделать анимацию? Надо прокрутить картинки 3 разаА затем остановить на выбранной

98
Как реализовать вывод текста из button в input?

Как реализовать вывод текста из button в input?

При нажатии на кнопку должен выводиться текст из нее в inputНичего подобного не нашла, как это реализовать?

65