Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 22.06.2024, 00:20
Интересующийся
Отправить личное сообщение для accountnujen Посмотреть профиль Найти все сообщения от accountnujen
 
Регистрация: 23.01.2022
Сообщений: 18

Как использовать разряды и сотые после запятой?
Уже третий час мучаюсь chatgpt.
Я пытаюсь в input text добавить разряды.
Пользователь должен иметь возможность написать сумму с копейками и это число должно поделиться на разряды. У меня возникают сложности с сотыми (копейками) и их ограничение. Если пользователь указал 1.23 , то дальше писать ему нельзя.

Слева - что пользователь пишет, справа - что должен получить в input при наборе текста.
1024,56 - 1 024,56
12 - 12
33,33 - 33,33
456.4 - 456.4
10000.01 - 10 000.01
Ответить с цитированием
  #2 (permalink)  
Старый 22.06.2024, 10:27
Аватар для deniscikasov@gmail.com
Аспирант
Отправить личное сообщение для deniscikasov@gmail.com Посмотреть профиль Найти все сообщения от deniscikasov@gmail.com
 
Регистрация: 14.03.2023
Сообщений: 76

https://codepen.io/Denisssss1ad/pen/...L?editors=1111 посмотри так ли

<input type="text" id="myInput" placeholder="Enter a number">

const inputField = document.getElementById('myInput');

    inputField.addEventListener('input', (e) => {
      const value = e.target.value.replace(/[^\d.,]/g, ''); 
      const [integer, decimal] = value.split('.'); 
      let formattedValue = '';

     
      formattedValue += integer.replace(/\B(?=(\d{3})+(?!\d))/g, ' '); 

      
      if (decimal) {
        formattedValue += ',' + decimal; 
      }

      e.target.value = formattedValue;
    });


Как нибудь сам объедини эти фрагменты, вроде всё, как ты просил
inputField.addEventListener('input', (e) => {
  const value = e.target.value;
  const [integerPart, decimalPart] = value.split(',');

  if (integerPart && integerPart.length > 12) {
    e.target.value = integerPart.substring(0, 12);
  }

  if (decimalPart && decimalPart.length > 2) {
    e.target.value = `${integerPart},${decimalPart.substring(0, 2)}`;
  }
});

Последний раз редактировалось deniscikasov@gmail.com, 22.06.2024 в 10:48.
Ответить с цитированием
  #3 (permalink)  
Старый 22.06.2024, 12:16
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,555

Используй для этого готовые библиотеки, например https://imask.js.org/guide.html#masked-number .
Они предусматривают кучу мелочей и удобств, вроде сохранения положения каретки. За тот костыль который ты руками напишешь пользователи тебя возненавидят.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как добиться, чтобы прогресс бар в модальном окне запускался после клика по ссылке да Lefseq Общие вопросы Javascript 3 06.10.2019 20:39
Как удалить дом элемент только после завершения css анимации? Piterom Общие вопросы Javascript 1 02.09.2019 08:45
Как сделать плавный переход к блоку после действия .trigger('click')? NeXan jQuery 9 07.10.2017 23:27
Как использовать each() для будущих элементов pro_xaoc jQuery 2 25.02.2013 07:12
Как изменить скрипт, что бы им его можно было использовать для нужной страницы Nick50_70 Общие вопросы Javascript 0 28.04.2009 23:30