2010-11-18 5 views
1

Как очистить текстовое поле (html-форму), если я нажму на него, чтобы что-то написать.JQuery Empty Текстовое поле Когда я нажимаю на него

Псевдо Код:

On click #searchform 
Erase String in #searchform 
+0

Почему вы хотите сделать это? Что делать, если вы набрали что-то неправильно и просто хотите отредактировать? Кажется, что вы хотите, чтобы текстовое поле содержало исходный текст (например: Введите поисковый запрос), тогда его нужно удалить, когда вы нажимаете. Правильно? – tbleckert

+0

@tbleckert Действительно. Я думаю, что это стандартная вещь для usabillity .. поэтому мне нужна условная ветвь, чтобы пользователь не разозлился. – Tomkay

+0

Почему бы вам не использовать атрибут HTML 5 placeholder ?! –

ответ

4

Try it here

$('#searchform').click(function() { 
    if ($(this).val() == 'Enter search term') { 
     $(this).data('original', $(this).val()).val(''); 
    } 
}); 

$('#searchform').blur(function() { 
    if ($(this).val() == '') { 
     $(this).val($(this).data('original')); 
    } 
}); 

EDIT В настоящее время вы должны использовать атрибут placeholder и если вы хотите, используйте выше как polyfill пропавших без вести поддержка заполнителя.

if (!('placeholder' in document.createElement('input'))){ 
    $('input[placeholder]').each(function() { 
     $(this).placeholder(); 
    }); 
} 

И превратите исходный код в плагин для удобства использования (с некоторыми небольшими модами).

jQuery.fn.placeholder = function() { 
    return this.each(function() { 
     var value = $(this).attr('placeholder'); 
     jQuery(this).val(value).addClass('placeholder'); 
     jQuery(this).focus(function() { 
      if (jQuery(this).val() == value) { 
       jQuery(this).val('').removeClass('placeholder'); 
      } 
     }); 

     jQuery(this).blur(function() { 
      if (jQuery(this).val() == '') { 
       jQuery(this).val(value).addClass('placeholder'); 
      } 
     }); 
    }); 
}; 
+0

Труднее добавить проверку таким образом. Представьте, что это поле необходимо. Тогда требуемый модуль проверки поля должен исключить начальное значение. Также представьте, что вы хотели бы использовать другой шрифт для заполнителя (или, по крайней мере, другого цвета), - тогда вам нужно будет toggleClasses. Я считаю, что атрибут «placeholder» - это путь. –

+0

Ну да, но это было в 2010 году, когда заполнители не были суперизвестны и хорошо реализованы в браузерах. Конечно, сейчас еще один момент. Но я должен уточнить свой ответ. – tbleckert

1

Если вы желаете, чтобы очистить значение по умолчанию из поля, такие как «Введите искомое слово» Я использую следующий код:

function clearText(thefield){ 
if (thefield.defaultValue==thefield.value) 
thefield.value = "" 
} 

, а затем на моем поле ввода я добавляю:

onfocus="clearText(this)" 

Так было бы:

<input type="text" name="username" value="enter your name here" onfocus="clearText(this)"> 
+1

Человек, которого вы никогда не должны использовать inline js ... – tbleckert

+0

Довольно новичок в скриптовой стороне вещей, поэтому любые указатели были бы очень благодарны за то, почему я не должен. Был просто разделение решения, которое я использовал в прошлом, чтобы обойти эту проблему. –

+1

Благодарим вас за свой бессвязный Винс. :) Я уверен, что эта работа прекрасна, но код может быть сжат каким-то образом. – Tomkay

3

Я бы рекомендовал вам использовать атрибут placeholder HTML5. Например:

<input type="text" placeholder="some default string if empty" /> 

Это будет работать с большинством из новейших браузеров и старых есть обходной путь JQuery плагин. Вот ссылка на placeholder plugin.

И тогда вы просто звоните:

$('input[placeholder]').placeholder(); 
+0

Демо-версия заполнителя http://davidwalsh.name/dw-content/html5-placeholder.php не работает в FF 3.5 - я не хочу использовать дополнительный плагин для этого .. ну, я выбираю ответ tbleckert. – Tomkay

+0

@Tomkay Теперь заполнитель является рекомендуемым способом делать вещи. Вы можете определить, поддерживает ли браузер его с помощью Modernizr или просто с помощью простого javascript if. Думаю, теперь только IE <= 8 будет использовать полипол. –

+0

Да, я думаю, HTML5 сейчас достаточно популярен, чтобы выполнить эту работу. Я также использую валидацию браузера для новых проектов. – Tomkay

Смежные вопросы