Ограничение максимального числа
Есть замечательный скрипт с помощью которого можно ввести только цифры. Как в него добавить проверку максимального и минимального значения в 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, время: 07:18. |