|
Общее Веб-разработка в целом, идеи, проекты... |
27.10.2012, 22:08
|
#1
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Как сделать маску для input-элемента
Пытаюсь сделать форму обратной связи. Создал элемент input type="text" , нужно сделать маску или фильтр для того, чтобы человек мог ввести только цифры или другие символы по маске... Как можно это реализовать?
|
(Offline)
|
|
27.10.2012, 23:02
|
#2
|
[object Object]
Регистрация: 01.08.2008
Адрес: В России
Сообщений: 4,361
Написано 2,473 полезных сообщений (для 6,857 пользователей)
|
Ответ: Как сделать маску для input-элемента
__________________
Retry, Abort, Ignore? █
Intel Core i7-9700 4.70 Ghz; 64Gb; Nvidia RTX 4090 3070
AMD Ryzen 7 3800X 4.3Ghz; 64Gb; Nvidia 1070Ti
AMD Ryzen 7 1700X 3.4Ghz; 8Gb; AMD RX 570
AMD Athlon II 2.6Ghz; 8Gb; Nvidia GTX 750 Ti
|
(Offline)
|
|
28.10.2012, 21:17
|
#3
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: Как сделать маску для input-элемента
Слишком много кода. А есть что-то "поменьше" ? Подскажите, пожалуйста, функцию перехвата набора с клавиатуры, чтобы пользователь мог вводить только цифры, а не другие символы...
|
(Offline)
|
|
28.10.2012, 21:51
|
#4
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать маску для input-элемента
Вот очень короткий вариант на jQuery в 5 строчек:
https://github.com/RobinHerbots/jquery.inputmask
|
(Offline)
|
|
30.10.2012, 09:18
|
#5
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Как сделать маску для input-элемента
JeanWinters, перехвата нажатий клавиш недостаточно, можно же ещё ПКМ -> Вставить, например. Бери одно из уже обкатанных предложенных решений и не парься.
|
(Offline)
|
|
01.11.2012, 19:43
|
#6
|
Знающий
Регистрация: 22.12.2007
Сообщений: 223
Написано 22 полезных сообщений (для 51 пользователей)
|
Ответ: Как сделать маску для input-элемента
Слишком громоздко получится. Есть ограничения различные, поэтому и хотелось что-то небольшого размера без jquerry и т.д.
|
(Offline)
|
|
02.11.2012, 00:27
|
#7
|
Ференька
Регистрация: 26.01.2007
Адрес: улица Пушкина дом Колотушкина
Сообщений: 10,742
Написано 5,461 полезных сообщений (для 15,675 пользователей)
|
Ответ: Как сделать маску для input-элемента
Сообщение от JeanWinters
Слишком громоздко получится. Есть ограничения различные, поэтому и хотелось что-то небольшого размера без jquerry и т.д.
|
Ты из клана Искателей Приключений?
Чем тебе jQuery не угодил? Он как раз и создан чтоб было "просто". Упрощает операции и убирает различия между браузерами там где возможно. Благодаря этому можно решить задачу просто, пользуясь такой платформой.
Или можешь писать на "чистом" JS и тогда придётся "сложно".
Насколько я понял, у тебя мало знаний в JS, но зато ты уже где-то узнал, что jQuery, Prototype и вообще большие скрипты — это плохо. Бабки на скамейке сказали, не иначе. У них же рекомендую спросить решение для твоей задачи, ведь наши советы тебе не нравятся.
Т.е. с одной стороны ты искатель готовых решений, но с другой тебе не нравятся библиотеки (которые суть — сборка готовых решений). Пиши тогда собственное решение, да, на onchange вешай и добро пожаловать в зоопарк браузеров. Эта проблема решена в библиотеках, но ведь они, по твоему мнению, слишком нагружают сайт и надо самому париться. Потом расскажешь, понравилось ли.
|
(Offline)
|
|
Эти 2 пользователя(ей) сказали Спасибо ABTOMAT за это полезное сообщение:
|
|
02.11.2012, 05:25
|
#8
|
ПроЭктировщик
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений (для 219 пользователей)
|
Ответ: Как сделать маску для input-элемента
Минималистично волшебный JS подход:
var field = /* ваше текстовое поле*/,
rx = new RegExp('[^A-Za-z0-9_]'), // регулярное выражение для фильтрации
ff = function() { // функция "фильтрации"
var s = field.value;
while (s.match(rx)) s = s.replace(rx, '');
// для наилучшего эффекта, тут еще нужно вставить обработку выделения в поле
if (field.value != s) field.value = s;
};
field.oninput = function(e) {
ff(); // запуск фильтрации
setTimeout(ff, 0); // на случай, если это почему-то не сработало, запускаем еще раз на следующем кадре.
}
__________________
Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
|
(Offline)
|
|
02.11.2012, 05:33
|
#9
|
.
Регистрация: 05.08.2006
Сообщений: 10,429
Написано 3,454 полезных сообщений (для 6,863 пользователей)
|
Ответ: Как сделать маску для input-элемента
Бери jQuery решения и не парься, что за "религия"?
Иначе реализуй сам, можешь использовать регулярные выражения для фильтрации, можешь завезти массив символов - тут проблема с поддержкой языков и т.п. С регулярными это проще обойти.
Далее тебе нужно нацеплять кучу событий на нажатия кликов и изменение данных самого поля. Также на субмит формы.
И самое главное на стороне сервера делать повторно все проверки, т.к. доверять клиенту никогда нельзя, я например смогу инспектором твой скрипт отредактировать и любые данные в формы вставить, инъекции и т.п. игнорируя твою фильтрацию.
На стороне сервера - это самое важное. Если юзер что-то делает не по правилам и получает по этому по носу - ещё одно дело, а если ты получишь от всех этих хитрых юзверей по носу - тут тебе мало не покажется.
Поэтому выход один - учись программировать. Не бывает 100% готовых решений, нету ничего с полки подходящего, и хватить бл**ть баловать всяких директоров и менеджеров этой иллюзией "готовенького" и "OpenSource" они ваще в коде не понимают нихера.
Учись программировать САМ.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 13:39.
|