Как использовать разряды и сотые после запятой?
Уже третий час мучаю
Я пытаюсь в 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 |
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)}`; } }); |
Используй для этого готовые библиотеки, например https://imask.js.org/guide.html#masked-number .
Они предусматривают кучу мелочей и удобств, вроде сохранения положения каретки. За тот костыль который ты руками напишешь пользователи тебя возненавидят. |
Часовой пояс GMT +3, время: 13:42. |