Ограничение максимального числа
Есть замечательный скрипт с помощью которого можно ввести только цифры. Как в него добавить проверку максимального и минимального значения в input? Мне нужен диапозон 1-255. Если ввели 300 - автоматический сброс на 255. Если ввели 0 - то сброс в 1.
В JS не силён. Заранее благодарен. JS function validate(evt) { //ввод только цифр var theEvent = evt || window.event; var key = theEvent.keyCode || theEvent.which; key = String.fromCharCode( key ); var regex = /[0-9]/; if( !regex.test(key) ) { theEvent.returnValue = false; if(theEvent.preventDefault) theEvent.preventDefault(); } } HTML <input type="text" maxlength="3" value="" onkeypress='validate(event)'/> |
workpage,
может type="number" ? |
В этом случае нельзя во первых ограничить кол-во введённых знаков, а во вторых опять таки можно ввести число не из диапазона. Другой вопрос что они отправлены не будут...
|
Ограничение ввода максимального числа
workpage,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
document.addEventListener( "DOMContentLoaded" , function() {
const on = (parent, event, selector, handler) => parent.addEventListener(event, ({target}) => {
if(target = target.closest(selector)) handler(target);
});
const limit = (min, max) => el => {
let txt = el.value, reg = /\D/g;
if(reg.test(txt)){
reg.lastIndex = 0;
txt = txt.replace(reg, "");
};
let num = Math.max(min, Math.min(+txt, max));
el.value = txt && num != txt ? num : txt;
};
on(document, "input", ".num", limit(1, 255));
});
</script>
</head>
<body>
<input type="text" maxlength="3" value="" class="num" /></body>
</html>
|
Цитата:
|
Цитата:
|
Цитата:
Также стандартный синтаксис упрощает работу с граничными значениями — вы можете их вводить в одном месте — там, где определено поле ввода!
<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 Цитата:
|
Цитата:
|
workpage,
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<script>
document.addEventListener( "DOMContentLoaded" , function() {
const on = (parent, event, selector, handler) => parent.addEventListener(event, ({target}) => {
if(target = target.closest(selector)) handler(target);
});
const limit = (min, max) => el => {
let txt = el.value, reg = /[^-0-9]/g;
if(txt == "-") return;
if(reg.test(txt)){
reg.lastIndex = 0;
txt = txt.replace(reg, "");
};
let num = Math.max(min, Math.min(+txt, max));
el.value = txt && num != txt ? num : txt;
};
on(document, "input", ".num", limit(-10, 255));
});
</script>
</head>
<body>
<input type="text" maxlength="3" value="" class="num" /></body>
</html>
|
| Часовой пояс GMT +3, время: 09:31. |