Как определить тот факт, что в <input type="number">
уже введён символ запятой или точки. Для чего это нужно: в FireFox неприятная особенность, в подобный input абсолютно свободно можно ввести любой символ, при этом он обрабатывается как число, то есть console.log(e.target.value)
выводит в консоли "1500", в то время, как в инпуте введено "1500," или "1500."
Из-за того, что Firefox не блокирует ненужные символы, я пишу свой обработчик.
//Предотвратить e в числовых инпутах
$("input[type='number']").on("keydown", function(e){
let isFirefox = typeof InstallTrigger !== 'undefined';
if (isFirefox) {
if (
!(["1", "2", "3", "4", "5", "6", "7", "8", "9", "0"].includes(e.key) ||
[".", ","].includes(e.key) && !e.target.value.match(/,./) || //не работает
e.keyCode < 32 ||
e.keyCode > 32 && e.keyCode < 48 ||
e.keyCode > 90 && e.keyCode < 94 ||
e.keyCode > 111 && e.keyCode < 124 ||
[144, 145, 182, 183].includes(e.keyCode))
) {
e.preventDefault();
}
}
});
Остаётся предотвратить ввод более чем одной точки или запятой. Подскажите, существует ли какая-то функция вроде e.target.непосредственноСтроковоеЗначение
, где e.target
- элемент <input type="number">
Можно попробовать что то вроде:
let lastValue = inp.value;
inp.addEventListener('input', (evt) => {
if (inp.value.match(/^\d+[.,]?\d*$/)) {
lastValue = inp.value;
} else {
inp.value = lastValue;
}
})
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Дано натуральное числоЕсли в нем есть цифры а и b, то определить, какая из них расположена в числе правее
Как лучше реализовать функцию combine с сигнатурой (JavaScript)
Подскажите - как я могу получить ширину g и text компонентов, чтобы потом на основе их значений вычислить нужный мне угол поворота для rotate