Поле ввода с убирающейся подсказкой
Трудно представить современный сайт без интерактивности. И она состоит из множества мелких деталей, которые стали уже чуть ли не стандартом в web-строительстве. Одна из таких "фишек" - текстовое поле ввода, в котором по умолчанию прописана подсказка об ожидаемом содержимом, например, "введите текст для поиска". При клике на это поле текст подсказки убирается, а при уходе с него, если пользователь ничего не ввел, текст подсказки возвращается обратно. Такой способ экономит полезное место в дизайне, не загромождая его выносными подсказками, а также помогает пользователю лучше ориентироваться при заполнении различных форм. Классический вариант, который обычно используется на сайтах, выглядит примерно так:Code (HTML) : Убрать нумерацию
- <label for="search">Поиск по сайту:</label>
- <input type="text" name="search" id="search" value="что ищем?"
- onfocus="if(this.value==this.defaultValue){this.value='';}"
- onblur="if(this.value==''){this.value=this.defaultValue;}">
Поскольку минусы предыдущего способа перевешивают плюсы, то я взял и написал свой вариант, лишенный практически всех перечисленных недостатков. К минусам можно записать только громоздкий код, но в остальном все получилось просто замечательно. Основной HTML-код очень похож на классический вариант, за исключением нескольких дополнительных тегов, стилей и атрибутов:
Code (HTML) : Убрать нумерацию
- <div class="smart_input">
- <label for="login" id="login_tooltip">логин</label>
- <input type="text" name="login" id="login" onfocus="hideTT(this);"
- onblur="chkTT(this);">
- </div>
- <div class="smart_input">
- <label for="passw" id="passw_tooltip">пароль</label>
- <input type="password" name="passw" id="passw" onfocus="hideTT(this);"
- onblur="chkTT(this);">
- </div>
Code (HTML) : Убрать нумерацию
- <style type="text/css">
- .smart_input {
- position: relative;
- vertical-align: top;
- }
- .smart_input label {
- position: absolute;
- top: 0px;
- left: 5px;
- display: none;
- cursor: text;
- font-size: 16px;
- font-family: Arial;
- color: #AAAAAA;
- }
- </style>
Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- // Проверка заполнения поля
- function chkTT(e) {
- if (typeof(e)=='string') { e=document.getElementById(e); }
- if (!e) { return false; }
- document.getElementById(e.id+'_tooltip').style.display =
- (e.value==''?'inline':'none');
- }
- // Спрятать подсказку
- function hideTT(e) {
- if (typeof(e)=='string') { e=document.getElementById(e); }
- if (!e) { return false; }
- document.getElementById(e.id+'_tooltip').style.display='none';
- }
- </script>
Code (JavaScript) : Убрать нумерацию
- <script type="text/javascript">
- // Показать подсказки в полях ввода
- chkTT('login');
- chkTT('passw');
- </script>
Просмотров: 18751 | Комментариев: 19
Внимание! Статья опубликована больше года назад, информация могла устареть!
Комментарии
Отзывы посетителей сайта о статье
Сергей
(22.08.2015 в 01:49):
Спасибо, нашел маленький, но очень нужный скрипт - респект автору!!!
ManHunter
(13.08.2014 в 11:00):
О да, точно. Камменты читать не обязательно, надо сразу же блеснуть знаниями.
Сделай-ка мне плейсхолдер красного цвета в поле password.
Сделай-ка мне плейсхолдер красного цвета в поле password.
Terry_Foster
(13.08.2014 в 10:41):
время прошло и теперь для этих целей есть placeholder :)
placeholder
placeholder
Вадим
(05.11.2013 в 17:23):
Спасибо за хорошее объяснение!
Елена
(10.10.2011 в 16:29):
lesnykh Ilja, Прошу прощения, placeholder не валидный, Надеюсь этот вариант поможет в решении моих "тараканов"
Temiko
(28.06.2011 в 10:59):
Благодарю за оперативный ответ! Теперь знаю в какую сторону копать )
ManHunter
(28.06.2011 в 10:21):
Никак. Браузер заполняет поля без генерации событий. Или запускать chkTT для всех полей по таймеру после полной загрузки страницы.
Temiko
(28.06.2011 в 10:17):
Отличный способ, всё работает, спасибо большое!
Только есть один нюанс: когда браузер автоматически подставляет в поля сохранённые логин и пароль, то проверка не срабатывает, и подсказка не исчезает.
Подскажите, пожалуйста, как это поправить? С примером кода, желательно, т.к. сам плохо в нём разбираюсь.
Только есть один нюанс: когда браузер автоматически подставляет в поля сохранённые логин и пароль, то проверка не срабатывает, и подсказка не исчезает.
Подскажите, пожалуйста, как это поправить? С примером кода, желательно, т.к. сам плохо в нём разбираюсь.
hedgehog
(17.03.2011 в 11:55):
Класс!
Очень полезно, все шикарно работает!
Респект!
Очень полезно, все шикарно работает!
Респект!
Bolirina
(14.03.2011 в 21:22):
Спасибо за функцию, только вопрос есть: "Функции инициализации должны вызываться после загрузки страницы" - это означает что эту функцию надо поместить на странице прямо перед закрывающим тегом </body>? Я вставляла ее после дивов и у меня при начальной загрузке никак подсказка не появляется...
ManHunter
(22.11.2010 в 18:39):
Серьезно? Лучше пользоваться головным мозгом. Мой способ работает везде, а твой placeholder поддерживается только в Safari 5, Chrome 6, Firefox 4, визуально никак не настраивается и не работает в полях типа password.
lesnykh Ilja
(22.11.2010 в 18:29):
лучше пользоваться аттрибутом html5 - placeholder
skul
(12.10.2010 в 01:51):
Дякую, ви дуже допомогли! Привет с Киева :-)
Nigelist
(29.09.2010 в 22:03):
Отлично, проверим... :)
ManHunter
(27.09.2010 в 21:21):
Ты не поверишь. Поисковый запрос вообще не меняется, стилями меняется только подсказка.
Nigelist
(19.09.2010 в 14:25):
А возможно ли во втором скрипте изменять оформление только подсказки, а не самого поискового запроса?
ManHunter
(25.04.2010 в 03:20):
Ну можно добавить событие onchange, но тогда придется делать еще дополнительную обработку значения поля, причем весьма громоздкую. Так что оно того не стОит.
Nutscracker
(25.04.2010 в 01:34):
Для полного счастья не хватает только очистки текста подсказки при перетаскивании текста. Но с этим, вроде бы, не все так просто. Или нужно тупо убирать подсказку при наведении курсора.
OnlineMan
(24.04.2010 в 00:51):
Спасибки! Использовал на своем сайте. Самый первый вариант - посчитал не к чему усложнять такую простую функцию сложными скриптами.
Добавить комментарий
Заполните форму для добавления комментария