2014-04-08 43 views
0

我希望能夠在我的選擇輸入指定HTML5風格的佔位符文本,就像這樣:如何快速將佔位符文本分配給所有尚未選中的選定元素?

<select name='blah' placeholder='select one'> 

但是,我需要的佔位符文本不被可選元素,而不是顯示在所有如果選擇包含已經選擇的<option>。另一方面,我知道一些瀏覽器會記住最後一個選擇,並在頁面重新加載時自動跳到它 - 這不應該算作已被選中的選項。好的使用jquery。

回答

0

這比看起來更容易 - 只是遍歷每個select元素,添加readonly禁用選定的非顯示選項與包含選擇的placeholder屬性的文本值...好吧,也許這不是那麼容易!在任何情況下,這裏是如何做到這一點:

$().ready(function(){ 
    $('select[placeholder]:not(:has(option[selected]))').each(function(i, o){ 
     $(o).append($('<option>'). 
      attr('readonly', 'readonly'). 
      attr('selected', 'selected'). 
      attr('disabled', 'disabled'). 
      css('display', 'none'). 
      text($(o).attr('placeholder')) 
     ); 
    }); 
}); 

·編輯使用更復雜的CSS選擇器A.沃爾夫的建議,而不是一個if語句的。

+0

'$()ready',真的?。順便說一句,'size()'已過時 –

+0

是不是夠了:'$('select:not(:has(option))')。append(function(){

+0

@ A.Wolff不,隱藏是不夠的。在某些瀏覽器中,隱藏的選項仍然可以通過鍵盤來選擇,所以它必須被禁用。不記得爲什麼readonly是必需的。 – Benubird

0

使用Select2

$("[name='blah']").select2({ 
    placeholder: "select one", 
    allowClear: true 
}); 
相關問題