У меня есть числовое поле ввода, в котором я зарегистрировал все измененные события:
- onchange
- onkeydown
- onkeyup
- onmousedown
- onmouseup
Мне нужно разрешить вставку только числовыхзначения с этими правилами:
- Значения от 0 до 24
- Возможны десятичные значения.
- Десятичное значение должно иметь только 1 десятичную цифру.
- Десятичный раздел должен быть кратным 0,5.
Мне нужно немедленно заменить старое значение, если текущее значение недопустимо.
Поэтому я должен принять,например, значения, подобные этим:
Я не могу принять значения, подобные этим:
- Привет
- -0,
- -1
- .
- ,,
- .5
- 25
- - 2
- ...
- e
Я пытался использовать этот код, но он не охватывает все случаи:
function customValidation(value) {
return /^\d*[.,]?]*[5]{0,1}$/.test(value) && (value === "" || (parseFloat(value) <= 24 && parseFloat(value) >= 0));
}
function eventListner(el) {
if (customValidation(el.value)) {
el.oldValue = el.value;
} else if (el.hasOwnProperty("oldValue")) {
el.value = el.oldValue;
}
}