Сообщение от workpage
|
В этом случае нельзя во первых ограничить кол-во введённых знаков, а во вторых опять таки можно ввести число не из диапазона.
|
Не забывайте про ввод значения пользователями, <input type="number"> позволяет вводить значение сразу с клавиатуры с
цифрами (вам ведь не нужен буквенный ввод!), «прокрутка» чисел стрелками, что несомненно улучшает
UX, и дополнительный скрипт для этого не нужен.
Также стандартный синтаксис упрощает работу с граничными значениями — вы можете их вводить в
одном месте — там, где определено поле ввода!
<input type="number" min="1" max="255" step="1">
<script>
function constrainField(field) {
field.value = field.value === ''
? field.value :
Math.clamp(Number(field.value.replace(/\D/g, '')), field.min, field.max);
}
if("clamp" in Math === false)
Math.clamp = function clamp(x, lower, upper) {
return Math.min(Math.max(lower, x), upper);
}
addEventListener("input", event => {
if(event.target.matches("input[type='number'][min][max]"))
constrainField(event.target);
});
</script>
https://rwaldron.github.io/proposal-...sec-math.clamp
Сообщение от laimas
|
Это как, если задано макс. 255 и это три цифры?
|
Число
может удовлетворять условию, но оно будет дробным. (Например, 249.1) Добавьте атрибут step="1" и min должен быть целым числом, чтобы проверку проходили только целые числа.