[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Улучшить input
DarkGuy
Доброго времени суток, гуру и не очень!
Опять обращаюсь к вам со своими глупыми вопросами.
Как сделать так,что бы можно было ввести только цифры от 1 до 28 ?
<input name="konech" value="">




Спустя 1 минута, 46 секунд (17.02.2012 - 01:55) TMake написал(а):
js в помощь

Спустя 3 минуты, 14 секунд (17.02.2012 - 01:58) walerus написал(а):
stepan - Краткость, - сестра таланта laugh.gif
DarkGuy - По форуму поиск сделай, было уже решение не раз упомянуто.

Спустя 2 минуты, 42 секунды (17.02.2012 - 02:01) TMake написал(а):
Цитата (walerus @ 17.02.2012 - 02:58)
Краткость, - сестра таланта

какой вопрос - такой ответ wink.gif

Спустя 9 часов, 57 минут, 23 секунды (17.02.2012 - 11:58) nugle написал(а):
Попробуй так
if(!preg_match('#^([1-9]{1}|1{1}[0-9]{1}|2{1}[0-8]{1})$#', $var))
echo 'Можно вводить только числа от 1 до 28';

Спустя 35 минут, 10 секунд (17.02.2012 - 12:33) ADiel написал(а):
Цифры бывают от 0 до 9 или я не прав? smile.gif
Нужен яваскрипт на клиентской стороне, но без проверки на сервере лучше не делать. nugle уже написал вариант серверной проверки.

Спустя 2 минуты, 33 секунды (17.02.2012 - 12:36) inpost написал(а):
DarkGuy
onchange, onblur - условия для инпута. Так же условие для формы onsubmit надо ставить.
Функция проверяет регулярным выражением форму.

Спустя 3 минуты, 27 секунд (17.02.2012 - 12:39) alexbel2404 написал(а):
на onkeyup/onchange повесить код, который будет проверять входит ли число в диапазон заданных, если нет, выводить сообщение или еще что-нибудь )

Спустя 53 секунды (17.02.2012 - 12:40) ADiel написал(а):
<!DOCTYPE html>
<html>
<head>
<meta
charset="utf-8">
<title>
test</title>
</head>
<body>
<input
name="konech" id="konech" value="" onchange="chkonech();" />
<script
type="text/javascript">
var
elem = document.getElementById("konech");
function chkonech() {
if (!elem.value.match(/^([1-9]{1}|1{1}[0-9]{1}|2{1}[0-8]{1})$/)){
alert('Можно вводить только числа от 1 до 28');
}
}

</script>
</body>
</html>

Спустя 1 час, 33 секунды (17.02.2012 - 13:41) inpost написал(а):
А ещё лучше:
parseInt, а потом if var<1 || var > 28

Спустя 10 минут, 15 секунд (17.02.2012 - 13:51) ADiel написал(а):
Ну я сделал аналогично проверке, предложенной nugle

Спустя 4 минуты, 23 секунды (17.02.2012 - 13:55) inpost написал(а):
Очень сильно можно сократить код тем, что {1} -можно не указывать, то есть просто указанный символ уже подразумевает именно в одном экземпляре!

К тому же 08 - тоже число 8, а проверку не пройдет smile.gif
15.5 - тоже входит в этот же диапазон.

Спустя 1 час, 16 минут, 46 секунд (17.02.2012 - 15:12) nugle написал(а):
inpost
Сократил, но сути не меняет
if(!preg_match('#^([1-9]|1[0-9]|2[0-8])$#', $var))
echo 'Можно вводить только числа от 1 до 28';

Цитата
К тому же 08 - тоже число 8, а проверку не пройдет
15.5 - тоже входит в этот же диапазон.

Я писал именно про целые числа, предложенный тобою вариант тоже не пройдет ;)

чтобы работали и числа с плавающей точкой, меняем на
if(!preg_match('#^((?:[1-9]|1[0-9]|2[0-8])\.?[\d]*)$#', $var))
echo 'Можно вводить только числа от 1 до 28';

Спустя 27 минут, 9 секунд (17.02.2012 - 15:39) inpost написал(а):
nugle
Чем не подойдет? parseInt преобразует 15.5 в 15, и будет в диапазоне. Соответственно 08 тоже станет цифро 8, тоже будет в диапазоне. smile.gif

Спустя 4 минуты, 39 секунд (17.02.2012 - 15:44) nugle написал(а):
А как тебе такое решение?
if(!preg_match('#^((?:0*[1-9]|1[0-9]|2[0-8])\.?\d*)$#', $var))
echo 'Можно вводить только числа от 1 до 28';

Спустя 4 минуты, 46 секунд (17.02.2012 - 15:49) Игорь_Vasinsky написал(а):
а нафиг тогда регулярка, когда

if((int)$var >=1 AND (int)$var <=28))
echo 'Можно вводить только числа от 1 до 28';



а тут вообще двусмысленно
Цитата
ввести только цифры от 1 до 28 ?


ввести - допустить ввод (тока JS)

или

ввести - допустить значение (php +-JS)

Спустя 3 минуты, 39 секунд (17.02.2012 - 15:52) nugle написал(а):
Игорь_Vasinsky
Для того чтобы, если вы с inpost'ом на пару введете - 22.f к примеру, у вам говорили, что Можно вводить только числа от 1 до 28

Спустя 1 минута, 25 секунд (17.02.2012 - 15:54) Игорь_Vasinsky написал(а):
а (int) - сделает из строки 0 - а ноль не прокатит wink.gif

Спустя 2 минуты, 29 секунд (17.02.2012 - 15:56) nugle написал(а):
мда?
А если попробовать
$var = '2f.f';
echo (int)$var;

Спустя 11 минут, 11 секунд (17.02.2012 - 16:07) inpost написал(а):
Точно.
(var == parseFloat(var) && parseFloat(var) >= 1 && parseFloat(var) <= 28) 

Спустя 48 секунд (17.02.2012 - 16:08) inpost написал(а):
nugle, твоё решение тоже правильное smile.gif

Спустя 1 минута, 7 секунд (17.02.2012 - 16:09) nugle написал(а):
inpost
и что это тебе даст? противоречишь сам себе, теперь проверка не пройдет на числа с плавающей точкой и с 08.

Спустя 1 минута, 29 секунд (17.02.2012 - 16:11) inpost написал(а):
nugle
Я parseFloat хотел написать. Выше исправил smile.gif

Спустя 5 минут, 22 секунды (17.02.2012 - 16:16) nugle написал(а):
inpost
осталось тебе с 08 решить проблему smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.