Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 16.10.2018, 16:26
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Поправить фильтр для инпута
Если это можно, помогите пожалуйста поправить фильтр для инпута.
Сам фильтр пропускает только числа и заменяет запятую на точку.

Проблема в том, что можно ввести вторую точку.
Например сейчас можно ввести так - 21.8454.789

<input type="text" id="test">
<script>
    document.querySelector('#test').addEventListener('input', function() {
        this.value = this.value.replace(/[,\.]+/, '.').replace(/[^\d.]/, '');
    });
</script>

Есть ли возможность исключить вторую точку?
Ответить с цитированием
  #2 (permalink)  
Старый 16.10.2018, 16:47
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

document.querySelector('#test').addEventListener('input', function() {
        this.value = this.value.replace(/[,\.]+/, '.').replace(/[^\d.]|(?<=\.\d*)\./, '');
    });

Это экспериментальная технология =)
Ответить с цитированием
  #3 (permalink)  
Старый 16.10.2018, 17:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,068

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>
Ответить с цитированием
  #4 (permalink)  
Старый 16.10.2018, 17:28
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

Спасибо ВАМ! Оба варианта работают правильно, по крайней мере в гугл-хроме.
Теперь появилась новая проблема - какой из этих вариантов выбрать?
Ответить с цитированием
  #5 (permalink)  
Старый 16.10.2018, 18:13
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

MC-XOBAHCK,
берите второй, мой только для современных браузеров.
Обычно использую babel поэтому пишу используя самые последние стандартны языка, а там само транспилируется под старье.
Ответить с цитированием
  #6 (permalink)  
Старый 16.10.2018, 18:40
Аватар для MC-XOBAHCK
Профессор
Отправить личное сообщение для MC-XOBAHCK Посмотреть профиль Найти все сообщения от MC-XOBAHCK
 
Регистрация: 06.08.2017
Сообщений: 473

j0hnik, теперь я понял смысл "экспериментальная технология".
У меня все скрипты тоже через бабыль прогоняются в гальпе и минимизируются через uglify. Мне непринципиально стандарт.
Ответить с цитированием
  #7 (permalink)  
Старый 16.10.2018, 21:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,492

А разве бабел правит регулярки? Или там плагин какой?
__________________
29375, 35
Ответить с цитированием
  #8 (permalink)  
Старый 17.10.2018, 10:56
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Aetae,
для lookbehind глянул сейчас, не нашел.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтр для яндекс карты. mo0n Общие вопросы Javascript 3 20.05.2016 18:05
Требуется программист на QML для создания интерфейса клиентской программы для общения m.simakov Работа 0 11.02.2016 18:07
Проблема с делегированием событий. Валидация инпута + крестик для его очистки h0x Events/DOM/Window 0 21.05.2014 10:04
QuickSearch или фильтр для грида IgorN ExtJS 1 29.09.2010 16:34