2010-08-06 128 views
0

我試過搜索,但還沒有找到答案。我看到當你在stackoverflow上提出問題時,「tags」的輸入字段顯示灰色文本「至少有一個標籤,例如... etc」。點擊後,灰色文字消失,您可以開始輸入您的值。如果我點擊它,說明會重新出現。我怎麼做?這個功能是否有開箱即用的實現,或者這是否需要自定義實現?JSF:帶輸入文本字段的預填充值?

謝謝!

回答

1

這是輸入字段上的模糊/焦點JavaScript事件處理程序。在jQuery中它會像下面這樣:

HTML

<input type="text" name="your-input" id="your-input" title="Enter a value"/> 

jQuery的

$('#your-input').focus(function(){ 
    var defaultVal = $(this).attr('title'); 
    if($(this).val() == defaultVal) 
     $(this).val(''); 
}); 
$('#your-input').blur(function(){ 
    var defaultVal = $(this).attr('title'); 
    if($(this).val() == '') 
     $(this).val(defaultVal); 
}); 
$('#your-input').trigger('blur'); 

它從輸入的title屬性採用默認值,並將焦點的價值並根據輸入的當前值模糊事件。最後的trigger()調用是在頁面加載時正確設置輸入的值。

你可以看到它in action here

+0

不知道這對我的應用程序是否可行,但謝謝您的回答。 – Mark 2010-08-06 15:30:44

0

最簡單的例子是

window.onload = function() { 
    var txtField = document.getElementById('textField'); 

    if(!txtField.value) { 
     txtField.value = 'Default Text'; 
    } 
} 


<h:inputText id="txtField" value="#{bean.txtField}" 
    onfocus="window.default=this.value; this.value='';" 
    onblur="if(!this.value) { this.value = window.default; }"/> 

我在任何情況下,我會建議將window.onload切換到任何dom就緒功能,如

document.observe('dom:loaded', function(){}); // Prototype 
$(document).ready(function(){}); // jQuery