не обращайте внимание, скрипт работает корректно, просто почему-то «sk1p» решил искать сразу минусы… Он имел в виду, что если кликаешь на середину поля, то курсор становится на место куда кликнул…
Даже если со второго клика и можно поставить курсор не в начало инпута, то проблему это не создает, так основная задача скрипта заключается в правильном заполнении поля, с которой он справляется на отлично!
во первых — не полностью введенные формы почему-то обнуляются, если теряют фокус (ЗАЧЕМ?)
во вторых — необходимо дописывать хотя-бы базовый контроль правильности введенных данных (чтобы идиотских дат типа 99/99/9999 не было)
в третьих — не забывать про золотое правило: не верить юзеру и ещё раз проверять все данные на сервере :)
как же мы любим ко всему придираться.
1. обнуляется потому что неправильно заполнено, подумайте, как часто вы теряете фокус при вводе номера телефона или даты рождения.
2. это просто пример того как можно сделать проверку правильности заполнения формы на лету, на самом деле для грамотных людей не составит труда перенести эту идею под свои нужды и не давать вводить несуществующих дат.
3. не вижу как данный скрипт может повлиять на золотое правило связанное с проверкой всего на сервере, ведь яваскрипт всегда можно отключить и ввести то, что пожелаешь…
Для грамотный людей не составит труда разобраться в 8Кб JS-кода, однако, это все равно, что прикручивать автозаполнение a-la google — лучше один раз сделать самому, чем разбираться с возможными последствиями.
Я не пытаюсь раскритиковать данный плагин — это, действительно, вещь хорошая и нужная. Просто если бы к ней добавить кастомизацию, проверку введенных данных у форм (совместить еще с парой jQuery-плагинов) и добавить интерфейсов — сообщество бы восприняло это на ура. Только вот, боюсь, это все никому не нужно…
таб прекрасно работает, между полями. и если не заметил то эта форма заточена под американские значения, и является лишь примером использования, не вижу смысле придераться к тому, что бывают коды городов с большим количеством цифер
Слишком большой код получится, особенно если например это страница регистрации, где форм не одна и не три, а предположим 10. Да и в css придется добавить отлично строчек. Собственно как говорится «овчинка выделки не стоит», легче довести до ума этот вариант.
По современным меркам +1кб кода никак нельзя считать слишком большим. На хабре страницы с комментариями пару метров весить могут и ничего, смотрите их без проблем, а 1 ну пусть 2кб кода сделали для вас проблему… Кстати не забываем что CSS кешируется браузером если в файл вынесено.
Ну а причем тогда копия? Это лишь «очередная реализация» на jQuery и не более того.
Я думаю если слово «копия» заменить на «очередная реализация» и убрать «Нуну...», то минусов не было бы так много)
для даты — совершенно неочевидно, где месяц, а где день.
Лучше приводить более информативные примеры, например, 25/12/2008; для ID: 12-1234567 — сразу понятно, по крайней мере, сколько там должно быть цифр, и глаза не разбегаются от обилия одинаковых знаков.
Ну и проверять известные ограничения сразу после ввода, об этом уже писали.
Идея плохая. Если вы даёте пользователю жёстую форму ввода, то тем самым вы сильно осложняете ему жизнь за счёт облегчения жизни программистам. Зачем вводить месяц 08, когда можно 8? Зачем заставлять вводить или даже видеть минусы? Почему косые, когда пользователь привык точки? Почему, наконец, не давать пользователю вводить поля через ^V или другим автоматическим способом? И т.д. и т.п. НЕУДОБНО человеку подстраиваться под машину и думать над КАЖДЫМ символом. Казалось бы, вы делаете это максимально дружественным способом, но всё равно плохо: должен я сам вводить разделители или нет? Будет ли работать BkSp? Грубо говоря, это новый control element с неизвестным поведением и вы предлагаете пользователю вместо простого ввода заняться исследованием поведения этого элемента.
Просто скажите пользователю, какие данные вы от него ждёте (напрмер, дд.мм.гггг) и примите ввод от него. А дальше используйте всю мощь программистов, чтобы распознать введенное и подсказать (сразу же! после ввода, т.е. при потере полем фокуса) что не так, если есть ошибка или неясность. Но не надо мешать пользователю ввести простое текстое поле. Это уже атомарная единица ввода. А когда пользователь успешно ввёл поле, то тут вы вполне можете его красиво отформатировать, раскрасить, всё что угодно. Пользователю будет приятно, как его хорошо поняла машина и как они вдвоём так быстро и удобно ввели такие красивые данные.
Может вы не знаете, любой драузер содержит столько багов, шописец, и даже в вашем любимом браузере (мозилла, наверное), и никуда от этого не деться, под всех подстраиваться нужно и исправлять.
Конкретно по этому примереу, видимо, (это мое предположение) сделано так, что-бы работало в эксплорере, а вксплорере keypress который по идее должен приходить на такие случаи нажатия не работает правильно, приходится перевешивать на keydown. А опера в тоже время верно работает с событиями и посылает keydown только один раз когда он действительно происходит. Фаерфокс в этом вопросе прогибается под эксплорер и шлет keydown так же часто.
И какой же должен быть шаблон, чтобы он позволял вводить все нижеперечисленные примеры?
(812) 123-45-67
+7 (812) 123-45-67
(96) 123-45-67
+380 (96) 123-45-67
(0642) 12-85-00
(06424) 5-12-22
Вот за что вас, интересно, заминусовали? Просто за мнение: о)
Один из фундаментальных принципов юзабилити гласит, что телефоны, например, надо давать вводить в свободной форме. Вы совершенно правы.
Он применим в ситуациях, когда вводимые данные жёстко укладываются в строгий формат, не допускающий вариаций. Таких данных очень мало, и их применение ограничено узким кругом предметных областей.
Очень просто, шаблона в данном случае не нужно. Из всего, что ввел пользователь, оставим только цифры, ну и плюс, если он есть вначале. Такой номер и храним, понятно, что не видно будет кода страны или города, простым способом, без справочника, их не выделить. Главное, чтоб такой номер можно было набрать на клавиатуре телефона и попасть куда нужно. Зачем жесткий формат для номера? Для целей биллинга скобки и черточки не нужны. Чтоб выделить и определить код города? Они, как показала жизнь, имеют обыкновение меняться. Выходит, что только для того, чтоб лучше запомнить, но если это нужно, человек может сам для себя мысленно расставить черточки, но как правило, когда кто-то заполняет web-форму, потом это хранится в некой БД, из которой тот, кому это нужно инфу извлекает и видя ее на экране набирает на телефоне.
К сожалению, немалая часть обывателей набирают этот номер, как +8 (812) 123-45-67, а средствами данного решения проверка валидности номера неосуществима.
Спасибо за ссылку, очень полезная вещь. Но главная проблема тут, что номер, начинающийся на +881 тоже может быть валидным (с небольшой вероятностью, конечно).
А вы сталкивались с информацией по длинам телефонных номеров в зависимости от страны? В свое время очень нужно было, искал, но ничего вразумительного не нашел.
Ну как, кто-нибудь реализовал свои доработки этого скрипта?
Может быть выложить в Google Code или другое хранилище?
Было бы интересно взглянуть, и может быть тоже приложить руку.
Просто не хочется делать ещё раз то, что уже сделали другие.
Ненавижу такие формы. Все вермя чертыхаюсь, когда приходиться заполнять их. Самый главный недостаток, то что copy-paste не работает.
Я считаю самый верный вариант, это проверять введенные данные при уходи фокуса с контрола, и подсвечивать каким-нибудь образом контрл с невалидными данными. Конрл должен понимать как можно больше форматов. Телефоны с черточками и скобками, с точками и пробелами. Даты с точками и слешами, а в идеале должен понимать названия месяцев.
«Ныть» мне надоест когда вы перестанете страдать херней. Не надо рассказывать мне про «самый обыкновенный обзор скрипта», чай не маленький уже. Или вы всех вокруг себя за дураков держите?
За дурака на данный момент я держу только Вас. Ваше нытье и анонимные минусы Вам чести не делают.
Кроме того, не вашему «высоко авторитетному» мнению мне слушаться, другие пользователи сделали свой выбор, а Вы лишь один из этих пользователей, у которого от кармы немного съехала крыша.
Дальнейшую переписку прошу Вас перенести в icq или личные сообщения. Иначе я просто буду Вас игнорировать.
Минусы отнюдь не анонимные, вы не заметили? ;) Мы о них даже отзываемся, цените.
Хабраобщество уже однажды плюнуло в вас — вы ссылку на свой бложек стали обрамлять неким текстом. Но ничего по сути не изменилось.
Ваши посты в основном — маленькие решеньица с минимальной пользой. Им подобные можно пачками находить на ресурсах по Wordpress и jQuery. Большой у вас там еще архив невысказанного? Может, закрытки в специализированных блогах всех спасут?
Хабр уже не тот, и вы для этого стараетесь особенно…
Почему так наехали на человека? Мне статья показалась интересной. Вот ради подобных статей я и посещаю хабр. Скрипт планирую использовать на одном из своих следующих проектов, как раз нужна такая реализация.
а как быть с необязательными параметрами, или например чтоб число от 3 до 7?
а замечания по поводу «неверно введена дата» как по мне так не уместны, потому что скрипт решает проблему ввода данных по формату, а не корректность ввода, пусть потом функция проверят правильно ли все ввели.
Супер-юзабильные формы