Маска текстового поля

13 сентября 2007 года, 12:10
К данной статье привязаны следующие примеры:

Иногда поля ввода имени пользователя и пароля размещаются таким образом, что нет места для описания того, для чего предназначены такие поля. На помощь приходит маска текстового поля.

При неактивности поля в нём будет отображён произвольный текст. При активации поля текст будет удалён.

Ввод: elementid - текстовый элемент, к которому следует применить маску masktext - текст маски

Функция:

function CreateTextMask(elementid, masktext) { var element = document.getElementById(elementid); element.value = masktext; element.onfocus = function() { if (element.value == masktext) { element.className = "maskable-false"; element.value = ""; } } element.onblur = function() { if (element.value.length == 0) { element.className = "maskable-true"; element.value = masktext; } } }

Стиль для маски:

.maskable-true { border:solid 1px #ddd; width:300px; color:#aaa; } .maskable-false { border:solid 1px #ddd; width:300px; color:#222; }

Пример использования:
<html> <head> <title>Маска текстового поля</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> /* Стиль маски */ </style> <script type="text/javascript" language="Javascript"> //Код функции маски </script> </head> <body> <form> <input class="maskable-true" type="text" id="LOGIN" /> <input class="maskable-true" type="text" id="PASSWORD" /> </form> <script type="text/javascript" language="Javascript"> CreateTextMask("LOGIN","Введите имя пользователя"); CreateTextMask("PASSWORD","Введите пароль"); </script> </body> </html>

Мнения (8)

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

  • Miscђka

    22 ноября 2007 г.14:03

    Для решений js неплохо бы размещать на этой же странице работающую иллюстрацию ;)

  • Дини автор

    13 декабря 2007 г.10:28

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

  • query

    01 февраля 2008 г.14:14

    Ещё пример, проще

    function ClearF(item) { if (item.value==item.defaultValue) { item.value=''; }}
    function FillF(item) { if (item.value=='') { item.value=item.defaultValue; }}

    onFocus="javascript:ClearF(this);" onBlur="javascript:FillF(this);"

  • Дин автор

    01 февраля 2008 г.14:31

    Не понятно, откуда берётся defaultValue.

    Во-вторых, пример не валиден с точки зрения XHTML и противоречит правилам разделения действия и структуры.

  • Vyazovoi Pavel

    24 апреля 2008 г.21:11

    Надо заметить, что в случае если в поле небыло введено какое-либо значение, то отправляется наше дефолтное.
    Следовательно, было бы разумно, очищать поля с дефолтным значением при отправке сообщения.

  • Vyazovoi Pavel

    24 апреля 2008 г.21:20

    *при сабмите формы если быть корректным

  • Дин автор

    24 апреля 2008 г.21:35

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

    Первая — очистка поля может происходить при отсылке формы, что является задачей формы (и не входит в данный модуль).

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

  • Sergiy

    31 июля 2010 г.16:46

    Но тем не менее все работает, спасибо!

Я тоже знаю!

Для обращения к человеку используйте символ @, после которого следует имя того, к кому обращаетесь (пробелы заменяются на знак подчёркивания). Если вам интересно, можете подписаться на комментарии по RSS или по эл. почте. Ведите себя достойно, вы же не роботы, правда?

Вы можете использовать следующие XHTML-элементы в разметке комментария: strong, em, span[class=crossline], a[href=uri], code[type=язык], blockquote, ul и ol. В качестве языка кода может быть указан, например, javascript или css.