Я посмотрел на источник и нашел это:
<input id="title" name="title" type="text" maxlength="300" tabindex="100" class="ask-title-field edit-field-overlayed" value="">
<span class="edit-field-overlay">what's your programming question? be specific.</span>
Исходя из этого, мое предположение (не глядя на код). Я думаю, что они используют текст в теге span в качестве значения по умолчанию для ввода текста. Я знаю это, потому что я изменил текст в промежутке (используя firebug), а затем перефокусировался в поле, он отображал мой отредактированный текст. Во всяком случае, вот что я быстро написал.
// set the default value based on the span text
$('input[name=foo]').val($('.foo-overlay').text());
// whenever there is focus or blur
$('input[name=foo]').bind('focus blur',function(){
// get the default text from the span
var defaultText = $('.foo-overlay').text();
// if the input field has default text
if(this.value == defaultText){
this.value = '';
}
// if the input is blank, set it to the default text
else if (!this.value.length){
this.value = defaultText;
};
});
Вот демоверсия . Я не говорю, что именно так они и делают. Это предположение, основанное на кратком обзоре.
редактировать
Просто перечитайте свой вопрос и поняли, что вы можете после того, как изначально не удалить значение по умолчанию? Проверьте эту похожую демонстрацию: http://jsbin.com/oyani4/2/
А вот и обновленный код:
// set the default value based on the span text
$('input[name=foo]').val($('.foo-overlay').text());
// whenever there is focus or blur
$('input[name=foo]').bind('focus blur',function(){
// if there is no length, reset to default text
if (!this.value.length){
this.value = $('.foo-overlay').text();
};
});
$('input[name=foo]').keydown(function(){
// if there is length and it's not our default text
if (this.value.length && this.value == $('.foo-overlay').text()){
this.value = '';
};
});