Ограничение на ввод символов в поле INPUT

Юрий Вайланд

Новичок
Ограничение на ввод символов в поле INPUT

Доброго всем времени суток!
---
Тема моя состоит в следующем:
Необходим совет по поводу того, как ограничить ввод в поле типа INPUT (обычная строка для ввода) только цифрами, т.е. допустим, есть на сайте форма, в одном поле которой можно ввести ТОЛЬКО ЦИФРЫ и только, допустим, 5 штук. (Если меньше - то выдается сообщение о том, что поле заполнено не полностью).
Такая вот штука - взаимодействие с JavaScript на лицо! :)
---
Ну.... Что же мне посоветуют завсегдатые пользователи PHPклуба?
---
PS: В итоге форма обрабатывается через PHP методом GET.
 

_RVK_

Новичок
Юрий Вайланд
Ты хочешь именно JS обрабатывать?
JS тоже поддерживает регулярные выражения.

Пример для твоего случая: [0-9]{5,}
 

Юрий Вайланд

Новичок
Всмысле, я не совсем разбираюсь в JavaScripte, быть может посоветуете, как лучше прописать всё это в теге input?
---
Буду очень рад ответу в стиле: <input type="text" name="numbers" ...>
 

Линка

Новичок
Юрий Вайланд
Буду очень рад ответу в стиле: <input type="text" name="numbers" ...>
<input type="text" maxlength=5 name="numbers" ...> физически не сможет пользователь ввести больше 5 знаков
а дальше скриптом проверяй через какойто инервал времени с помощью регулярок что введены именно цифры или цепляй проверку на событие onkeypress или up или down
 

zarus

Хитрожопый макак
Код:
<script>
function check_number(obj) {
  obj = (obj) ? obj : window.obj
  var charCode = (obj.which) ? obj.which : obj.keyCode
  if (charCode > 31 && (charCode < 48 || charCode > 57)) {
    status = "В данное поле можно вводить только цифры"
    return false;
  }
  status = \'\';
  return true;
}
</script>
<input type="text" size="6" onKeyPress="return check_number(event);" />
 

Юрий Вайланд

Новичок
zarus
За совет, конечно же, спасибо. Только вот не работает он у меня. :(
В поле input я смог и буквы писать, и цифры и всё подряд...
---
Быть может, что-то не так делаю?
 

white phoenix

Новичок
matilda
> причем тут интервал времени???
Не обращай внимания, бывает еще не то напишут ;)
Имелся в виду запуск проверки поля через например 0.2 сек, но это неправильно, ровно как и onkeyup. Нужно выполнять функцию проверки по событию onChange проверяемого поля.
 

white phoenix

Новичок
Линка
> onChange для inputa не работает
По религиозным причинам? Не вводи ma~ в заблуждение :)
 

bkonst

.. хочется странного?...
onchange даст результат, когда пользователь попытается выйти из поля, а onkeyup - в момент ввода неправильного символа. Так что это еще бабушка надвое сказала, что предпочтительнее.
 

white phoenix

Новичок
bkonst
Совершенно верно. Именно поэтому я предложил onChange, зачем проверять всё поле через каждое промежуточное изменение?
 

Юрий Вайланд

Новичок
Читаю вот ваши сообщения... - Так и начинаю врубаться в JavaScript всё больше и больше. Да вот только не до конца! :)
---
Напишите, уж, в конце-то концов, как именно будет выглядеть скрипт, который не позволит в поле input вводить больше 5 значений ЦИФР...
---
Жду Ваших HTML+JS-комментариев. :)
 

Линка

Новичок
Юрий Вайланд

<input id=numbers type="text" maxlength=5 name="numbers" onchange ="Your_function()">
<script>
function Your_function(){
if (/^[0-9]*$/.test(numbers.value)) {<!-- "На лету" создаем объект класса RegExp -->
alert("Правильно");
}
else {
alert("Не правильно");
}
}
</script>
Коментариев выше предостаточно
white phoenix
пасибки за onchange (все элементарно и просто):)
 

white phoenix

Новичок
Юрий Вайланд
> Так и начинаю врубаться в JavaScript всё больше и больше.
Язык элементарный, советую почитать книжку, хотя мне ничего читать (кроме исходников) не понадобилось.
> Напишите, уж, в конце-то концов, как именно будет выглядеть скрипт,
> который не позволит в поле input вводить больше 5 значений ЦИФР...
PHP:
<input type="text" maxlength=5 name="numbers" id="numbers" onchange="checknumbers()" value="">
<script>
function checknumbers()
{
 if (!(/^[0-9]*$/.test(numbers.value))) {numbers.value = numbers.value.replace(/[^0-9]*/,'');}
}
</script>
Линка
Пасибки не мне, а Брендану Эйху (создателю JS).
 

Юрий Вайланд

Новичок
Спасибо за примеры.
---
Это конечно же хорошо, но не совсем то, что хотелось бы. :)
---
Нужно сделать так, чтобы НЕЛЬЗЯ БЫЛО ВВЕСТИ буквы, знаки препинания и т.д. А МОЖНО БЫЛО БЫ ВВОДИТЬ ТОЛЬКО ЦИФРЫ.
---
Если есть возможность - распишите, как это лучше сделать.
 

physh

поедатель запятых
ГЫ, по-моему это очень хорошо было расписано в первом примере.
 
Сверху