Удалите значение по умолчанию входного текста по щелчку

У меня есть входной текст:

<input name="Email" type="text" id="Email" value="email@abc.com" />

Я хочу поместить значение по умолчанию как, "Каков Ваш вопрос о программировании? будьте конкретны". в StackOverFlow, и когда пользователь нажимают на него, исчезает значение по умолчанию.

59
задан Wassim AZIRAR 6 June 2010 в 13:26
поделиться

4 ответа

На будущее, я должен включить HTML5 способ сделать это.

<input name="Email" type="text" id="Email" value="email@abc.com" placeholder="What's your programming question ? be specific." />

Если у вас есть HTML5 doctype и HTML5-совместимый браузер, это будет работать. Однако многие браузеры в настоящее время этого не поддерживают, поэтому, по крайней мере, пользователи Internet Explorer не смогут увидеть ваш заполнитель. Однако, смотрите http://www.kamikazemusic.com/quick-tips/jquery-html5-placeholder-fix/ (archive.org версия) для решения проблемы. Используя его, вы будете очень современными и соответствующими стандартам, и в то же время обеспечите функциональность для большинства пользователей.

Кроме того, предоставленная ссылка - это хорошо протестированное и хорошо разработанное решение, которое должно работать из коробки.

108
ответ дан 24 November 2019 в 18:00
поделиться

Думаю, это немного чище. Обратите внимание на использование свойства "defaultValue" ввода:

<script>
function onBlur(el) {
    if (el.value == '') {
        el.value = el.defaultValue;
    }
}
function onFocus(el) {
    if (el.value == el.defaultValue) {
        el.value = '';
    }
}
</script>
<form>
<input type="text" value="[some default value]" onblur="onBlur(this)" onfocus="onFocus(this)" />
</form>
26
ответ дан 24 November 2019 в 18:00
поделиться

РЕДАКТИРОВАТЬ : Хотя это решение работает, я бы порекомендовал вам попробовать решение MvanGeest ниже , которое использует атрибут-заполнитель -атрибут и резервный javascript для браузеров, которые не поддерживаю это пока.

Если вы ищете Mootools, эквивалентный резервному варианту JQuery в ответе MvanGeest, вот один .

-

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

Вот пример:

<input type="text" value="email@abc.com" name="Email" id="Email"
 onblur="if (this.value == '') {this.value = 'email@abc.com';}"
 onfocus="if (this.value == 'email@abc.com') {this.value = '';}" />
64
ответ дан 24 November 2019 в 18:00
поделиться

Используя jQuery, вы можете сделать:

$("input:text").each(function ()
{
    // store default value
    var v = this.value;

    $(this).blur(function ()
    {
        // if input is empty, reset value to default 
        if (this.value.length == 0) this.value = v;
    }).focus(function ()
    {
        // when input is focused, clear its contents
        this.value = "";
    }); 
});

И вы можете запихнуть все это в пользовательский плагин, например, так:

jQuery.fn.hideObtrusiveText = function ()
{
    return this.each(function ()
    {
        var v = this.value;

        $(this).blur(function ()
        {
            if (this.value.length == 0) this.value = v;
        }).focus(function ()
        {
            this.value = "";
        }); 
    });
};

Вот как вы будете использовать плагин:

$("input:text").hideObtrusiveText();

Преимущества использования этого кода:

  • Он ненавязчив и не загрязняет DOM
  • Повторное использование кода: он работает с несколькими полями
  • Он сам определяет значение по умолчанию для вводимых данных



Подход без использования jQuery:

function hideObtrusiveText(id)
{
    var e = document.getElementById(id);

    var v = e.value;

    e.onfocus = function ()
    {
        e.value = "";
    };

    e.onblur = function ()
    {
        if (e.value.length == 0) e.value = v;
    };
}
7
ответ дан 24 November 2019 в 18:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: