17 января 2008 ~ 26 Комментариев

Супер-юзабильные формы

super_form

Как-то на хабре разгорелся спор, как заставить пользователя вводить дату в правильном формате, было множество интересных решений, но заставлять пользователя совершенно не надо — пусть за пользователя основную работу делают машины :-).

На помощь приходит замечательный скрипт «Masked Input Plugin», который позволяет назначить для каждой формы маску, по которой данные будут заполнятся.

Возможно Вы не совсем поняли, но лучше один раз увидеть, чем сто раз услышать.

Живой пример


Дата

Формат: 99/99/9999

Телефон

Формат: (999) 999-9999

Tax ID

The Others dvd

Формат: 99-9999999

SSN

Формат: 999-99-9999

Ужасно просто и ужасно гениально.

Реализация форм с маской

Как вы уже поняли, для начала нам понадобится скрипт «Masked Input Plugin» написанный на jQuery, его размер поистине радует 2.8 килобайта.

Такой маленький, а столько пользы!

И так, пример использования скрипта:

<script type="text/javascript">
jQuery(function($){    $("#date").mask("99/99/9999");    $("#phone").mask("(999) 999-9999");    $("#tin").mask("99-9999999");    $("#ssn").mask("999-99-9999");
});
</script>

Этот скрипт будет добавлять узнанную маску для форм с id: date, phone, tin, ssn.

Теперь о масках символов:

  • a - Все алфавитные значения (A-Z,a-z)
  • 9 - Все цифровые значения (0-9)
  • * - Любые алфавитно-цифровые значения (A-Z,a-z,0-9)

 

Теперь более расширенный функции:

jQuery(function($){
   $("#product").mask("99/99/9999",{placeholder:" "});
});

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

 


jQuery(function($){
   $("#product").mask("99/99/9999",{completed:function(){alert("Вы ввели: "+this.val());}});
});

Этот позволяет исполнять любую функцию по заверению ввода в форму.

 

Вкратце функционал я описал, более подробно вы можете прочитать на сайте автора этого замечательного скрипта.

 

Mad Max trailer

Посетить страницу «Masked Input Plugin»

26 Комментариев для “Супер-юзабильные формы”

  1. Somebody32 17 августа 2008 at 15:08 Permalink

    Был бы такой на прототайпе, то у меня был бы приступ эйфории =)
    Спасибо, за материал!

  2. Astartsky 17 августа 2008 at 15:16 Permalink

    Идея очень интересная, но есть ньюанс: эти маски не помешают выбрать 87-ое число 55-ого месяца =)

  3. Я собственной персоной 17 августа 2008 at 15:32 Permalink

    Идея очень интересная, но есть ньюанс: эти маски не помешают выбрать 87-ое число 55-ого месяца =)

    Ну этот скрипт для создания правильного формата заполнения, а не для валидации.

  4. Andrey 17 августа 2008 at 16:06 Permalink

    Сижу я значит, делаю форму для своего сайтика… устал… решил отвлечься, отдохнуть посмотрев что нибудь интересное, и вдруг на тебе….наткнулся на эту замечательную запись :)
    Спасибо, что открыл для меня этот плагинчик! :)

  5. O 17 августа 2008 at 17:20 Permalink

    А почему табом нельзя переключиться на соседнее поле?

  6. Я собственной персоной 17 августа 2008 at 17:39 Permalink

    А почему табом нельзя переключиться на соседнее поле?

    Теперь все нормально ;-)

  7. Сергей 18 августа 2008 at 2:07 Permalink

    А если в первой форме ввести (там где 99/99/9999) 15/5/1515 то при снятии фокуса с формы,текст пропадает, и мне заново надо вводить форму, но ведь я ввёл вроде бы правильно, не зставишь же пользователя писать 05, место 5?

  8. Сергей 18 августа 2008 at 2:08 Permalink

    А если в первой форме ввести (там где 99/99/9999) 15/5/1515 то при снятии фокуса с формы,текст пропадает, и мне заново надо вводить форму, но ведь я ввёл вроде бы правильно, не зставишь же пользователя писать 05, место 5?

    зы: это премодерация или просто коментарии не отправляются?

  9. Связист 18 августа 2008 at 19:50 Permalink

    Попробую на прототайп переписать. Не шустр, так что результат будет не раньше чем через 2 недели.

  10. ZoNT 20 августа 2008 at 19:55 Permalink

    1) при вставке через ctrl+v в Опереи и в Сафари вставка не корректоируется.
    2) при выделении части введённого текста и перетаскивании его мышкой в другое место в инпуте в Опере контент дублируется, в ИЕ7 он перемещается, но не дублируется…

  11. ZoNT 20 августа 2008 at 19:57 Permalink

    В Опере при удаленнии бэкспейсом всавляется пустой символ.
    Если нажимать backspce+end много раз получается прикольно :)

    Баг на баге и багом погоняет :)

  12. ZoNT 20 августа 2008 at 19:58 Permalink

    Ужасно просто и ужасно гениально.

    Ужасно…

  13. Я собственной персоной 20 августа 2008 at 20:23 Permalink

    Ужасно просто и ужасно гениально.

    Ужасно…

    Скрипт нужно дорабатывать. Вас никто не заставляет использовать его как есть.

  14. ZoNT 21 августа 2008 at 22:06 Permalink

    Ужасно просто и ужасно гениально

    Такое нельзя писать про скрипт, который бажит и его надо дорабатывать…

  15. Kapishin 26 августа 2008 at 1:11 Permalink

    Интересно, но не более.

    В моих проектах в формы можно вводить, дату например, как угодно (хоть пятое июля, хоть 5 июля, и т.п.); обработка этого производится на сервере, где, по моему скромному мнению, и должна происходить.

    То есть, пользователь должен быть волен ввести дату так, как ему нравится.

  16. Kolia 30 августа 2008 at 21:41 Permalink

    Просветите: нужно ли какие то действия предвортельные для спользования скриптов написанных на jQuery? Нужно ли что-то устанавливать до?

  17. Я собственной персоной 31 августа 2008 at 2:57 Permalink

    Просветите: нужно ли какие то действия предвортельные для спользования скриптов написанных на jQuery? Нужно ли что-то устанавливать до?

    Ничего не надо устанавливать.
    Подключил библиотеку jQuery, подключил необходимый плагин, наслаждаешься (-:

  18. Kolia 31 августа 2008 at 3:01 Permalink

    Вот эта фраза собственно интересует «Подключил библиотеку jQuery» – как это сделать?

    … кто не спрашивает, тот не учиться)

  19. Я собственной персоной 31 августа 2008 at 17:10 Permalink

    Вот эта фраза собственно интересует «Подключил библиотеку jQuery» – как это сделать?

    … кто не спрашивает, тот не учиться)

    Попробуйте начать с прочтения перевода очень хорошей статьи для начинающих.

  20. Zakopay 12 февраля 2009 at 5:58 Permalink

    Усовершенствованной версии не ожидается?

  21. salamander 4 июня 2009 at 20:25 Permalink

    $(’#phone’).mask(’8-099-999-99-99′);

    Эта маска бажит в IE при переходе на следующее поле.

  22. Владислав 25 июля 2009 at 2:32 Permalink

    meioMask – http://www.meiocodigo.com/ – более продвинутый, но тоже не без недостатков.

    Мне бы хотелось, чтобы можно было добавлять 2 телефона, добавить добавочный номер, два варианта мобильного, ведь он может быть с федеральным номером, а может быть с городским.

    В общем есть куда копать, а так Masked Input Plugin действительно штука хорошая, хотя и не продуман вариант с денежными величинами

  23. webs 8 октября 2009 at 3:28 Permalink

    красивая и весьма не практичная штука

  24. Ivon 22 октября 2009 at 4:28 Permalink

    хорошо, спасибо за данный скрипт

  25. Sowenok 4 мая 2010 at 15:25 Permalink

    Подскажите, а если нужно чтобы маску сразу было видно а не при нажатии, что сделать?


Оставить комментарий