Поправить фильтр для инпута
Если это можно, помогите пожалуйста поправить фильтр для инпута.
Сам фильтр пропускает только числа и заменяет запятую на точку. Проблема в том, что можно ввести вторую точку. Например сейчас можно ввести так - 21.8454.789 <input type="text" id="test"> <script> document.querySelector('#test').addEventListener('input', function() { this.value = this.value.replace(/[,\.]+/, '.').replace(/[^\d.]/, ''); }); </script> Есть ли возможность исключить вторую точку? |
document.querySelector('#test').addEventListener('input', function() { this.value = this.value.replace(/[,\.]+/, '.').replace(/[^\d.]|(?<=\.\d*)\./, ''); }); Это экспериментальная технология =) |
MC-XOBAHCK,
<input type="text" id="test"> <script> document.querySelector('#test').addEventListener('input', function() { this.value = this.value.replace(/,/, '.').replace(/\./g, function(a, b, c) { return c.indexOf(a) == b ? a : '' }).replace(/[^\d.]/, ''); }); </script> |
Спасибо ВАМ! Оба варианта работают правильно, по крайней мере в гугл-хроме.
Теперь появилась новая проблема - какой из этих вариантов выбрать? |
MC-XOBAHCK,
берите второй, мой только для современных браузеров. Обычно использую babel поэтому пишу используя самые последние стандартны языка, а там само транспилируется под старье. |
j0hnik, теперь я понял смысл "экспериментальная технология".
У меня все скрипты тоже через бабыль прогоняются в гальпе и минимизируются через uglify. Мне непринципиально стандарт. |
А разве бабел правит регулярки? Или там плагин какой?
|
Aetae,
для lookbehind глянул сейчас, не нашел. |
Часовой пояс GMT +3, время: 10:26. |