Форум программистов, компьютерный форум, киберфорум
Наши страницы
JavaScript
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.96/90: Рейтинг темы: голосов - 90, средняя оценка - 4.96
[progeR]
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
Завершенные тесты: 1
1

Позволить вводить в input только числа?

12.05.2013, 20:30. Просмотров 16495. Ответов 14
Метки нет (Все метки)

Добрый вечер.
Как сделать, что в input можно было вводить только числа? При этом первая цифра не может быть нулем.
Посмотрел инет - там пусто, либо не рабочий код. Хотелось бы коротко с помощью регулярных выражений.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
12.05.2013, 20:30
Ответы с готовыми решениями:

Как сделать фильтр, только числа чтоб в input type text вводить?
есть input type = text, как сделать чтобы в него можно было вводить только цифры?

что бы можно было в input вводить точки
Добрый день, я совершенно нуб в этой области... Есть форма с input, в которой запрещено все кроме...

Вводить в textbox только цифры и запятые
Здравствуйте! Требуется чтобы пользователь смог вводить в поле Textbox только цифры и запятую и...

Регулярные выражения - вводить только буквы
Добрый день. Как составить регэксп, согласно которому в инпут можно вводить только буквы (англ-яз,...

Как сделать чтобы пользователь мог вводить только цифры?
Как сделать чтобы пользователь мог вводить только цифры или точку? А именно символы, которые...

14
zhibirc
649 / 234 / 77
Регистрация: 18.02.2013
Сообщений: 784
12.05.2013, 21:19 2
Ну вообще можно так:
HTML5
1
<input type="number" />
Но не пашет, по отзывам, в FF, да и 0 пропускает.

Регулярка будет выглядеть так:
Javascript
1
/[1-9]/g
А вот уже проверка ввода это уже на Ваш вкус: search, test, а может быть replace.
В последнем случае можно написать что-то типа:
Javascript
1
this.input.value = this.value.replace('/[^1-9]/g', ' ');
2
kalabuni
супермизантроп
Эксперт JS
3401 / 2699 / 646
Регистрация: 18.04.2012
Сообщений: 8,215
12.05.2013, 21:27 3
здесь сложность не в регулярках,
а в отлавливании события ввода текста (его ведь можно ввести не только с клавы, но и мышью, и через меню)
в разных браузерах это по разному делается

кроме того, попутно появляется задача установки курсора в текстовом поле на его место, если вдруг юзер в середину числа попытается "воткнуть" букву

а если же просто (только с клавы, да и хрен с ним, с курсором), то
HTML5
1
<input onkeyup="this.value = this.value.replace (/\D/gi, '').replace (/^0+/, '')">
3
zhibirc
649 / 234 / 77
Регистрация: 18.02.2013
Сообщений: 784
12.05.2013, 21:32 4
Кстати, если верить htmlbook-у, то на текущий момент поддержка у FF есть далеко не для всех нововведенных типов, зато имеющиеся, пусть среди них и нет таких "крутых" как "color", но те что есть реально нужные и те, с которыми иногда приходится возиться, составляя оптимальный регэксп: "email", "tel", "url".

Добавлено через 5 минут
Цитата Сообщение от kalabuni Посмотреть сообщение
его ведь можно ввести не только с клавы, но и мышью, и через меню
И вставить из буфера. replace такую вставку "ловит".
0
12.05.2013, 21:32
kalabuni
супермизантроп
Эксперт JS
3401 / 2699 / 646
Регистрация: 18.04.2012
Сообщений: 8,215
12.05.2013, 21:39 5
мух от котлет отделите

"отлавливает" в моём примере onkeyup, ибо я так и написал - "только с клавы"
а replace () в моём примере "обрабатывает"

так вот... обрабатывать replace () может чем угодно и как угодно отловленное

поняли?
0
[progeR]
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
Завершенные тесты: 1
12.05.2013, 21:52  [ТС] 6
Спасибо.
Забавный ввод получается. Нажимаешь на буквенную клавишу, буква появляется и исчезает)
А вот чтобы вообще не появлялась можно?
0
kalabuni
12.05.2013, 21:56
  #7

Не по теме:

Цитата Сообщение от [progeR Посмотреть сообщение
А вот чтобы вообще не появлялась можно?
можно - выломайте пользователю все буквы на клавиатуре, чтобы и нажать не смог :)

0
zhibirc
649 / 234 / 77
Регистрация: 18.02.2013
Сообщений: 784
12.05.2013, 22:10 8
А вот чтобы вообще не появлялась можно?
Попробуйте onkeydown или oninput или onpropertychange.
0
Vovan-VE
13171 / 6558 / 1039
Регистрация: 10.01.2008
Сообщений: 15,069
13.05.2013, 15:39 9
Цитата Сообщение от [progeR] Посмотреть сообщение
Забавный ввод получается. Нажимаешь на буквенную клавишу, буква появляется и исчезает)
Это еще цветочки.

Для начала введите несколько символов и попробуйте угнанть каретку в середину текста клавишами со стрелками [←] и [→]. Если получится, я чем я сомневаюсь (особенно в IE), то теперь в середине текста попробуйте вписать несколько цифр. После этого Вам, возможно, потребуется успокоительное.

Нельзя вот так в лоб менять значение при каждом нажатии на любую кнопку. Отсюда вывод: выборочная реакция на отдельные кнопки... Но один фиг, при изменении значения поля в то время, когда в нём находится фокус, каретка будет уезжать в конец. Отсюда вывод - пусть вводит что угодно. Когда закончил ввода (ушел фокус из поля) - сработало стандартное событие change - и все довольны. А для real-time "вылидации" можно просто цвет текста менять на красный, когда всё плохо.
2
JsLoveR
425 / 167 / 48
Регистрация: 05.12.2012
Сообщений: 855
13.05.2013, 17:38 10
Можно сделать, чтобы удалялось мгновенно, для этого стоит setInterval использовать. Как ток фокус убран вырубать интервал.
0
koza4ok
629 / 438 / 67
Регистрация: 19.09.2012
Сообщений: 1,633
14.05.2013, 21:47 11
Будущее http://htmlbook.ru/html/input/pattern
1
[progeR]
30 / 8 / 2
Регистрация: 20.08.2011
Сообщений: 615
Завершенные тесты: 1
14.05.2013, 23:55  [ТС] 12
Ясно, благодарю. И за паттерны спасибо, запомню. Только вот во всяком треше типа ИЕ не работает, судя по описанию.
Думал получится как в Qt через класс QRegExp. Там вообще не получится ввести в поле ничего кроме цифр.
0
JsLoveR
425 / 167 / 48
Регистрация: 05.12.2012
Сообщений: 855
14.05.2013, 23:58 13
Тяжело обращаться к форме каждые 4 м/сек и очищать её от ненужных значений ?
0
zhibirc
649 / 234 / 77
Регистрация: 18.02.2013
Сообщений: 784
15.05.2013, 00:17 14
И тем не менее мне самым взвешенным кажется вариант Vovan-VE.
В конце-концов, при желании, фильтрацию ввода средствами JS можно обойти, сохранив страницу и отредактировав код, отключив JS вообще, послав данные непосредственно в адресной строке...
Поэтому разумным будет наверное проводить ненавязчивую проверку непреднамеренных опечаток. Можно использовать всплывающие подсказки (tooltips), помогающие пользователю сориентироваться. После того как я однажды заюзал replace мне это показалось довольно забавным, но малоупотребимым. Хотя наверное зависит от проекта - где-то такие штуки пройдут на ура, а где-то будут смотреться нелепо.
А окончательную проверку проводить на стороне сервера.
0
newJS
Эксперт JSЭксперт HTML/CSS
2400 / 1074 / 307
Регистрация: 23.06.2011
Сообщений: 3,347
15.05.2013, 06:37 15
Можно отслеживать каждый символ и курсор, только огород огородистый получается.
Берем из поля место курсора и валуй.
Регуляркой не глядя выкидываем чужаков, возвращаем валуй в поле, возвращаем курсор.
Ну и танцы с бубнами, особенно вокруг осла.

Проще ловить чужака и фон красить, здесь хотя бы с курсором не развлекаться.
1
15.05.2013, 06:37
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.05.2013, 06:37

Как позволить вводить только определенные символы в textarea
Нужно разрешить только ввод латинских букв, чтобы все остальное игнорировалось(цифры, знаки...

В input вводить только английские буквы
Доброго времени суток. В общем нужно в input type=text разрешить ввод только английских букв (т.е....

В input вводить только английские буквы?
Доброго времени суток. В общем нужно в input type=text разрешить ввод только английских букв (т.е....


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru