我希望能夠在我的選擇輸入指定HTML5風格的佔位符文本,就像這樣:如何快速將佔位符文本分配給所有尚未選中的選定元素?
<select name='blah' placeholder='select one'>
但是,我需要的佔位符文本不被可選元素,而不是顯示在所有如果選擇包含已經選擇的<option>
。另一方面,我知道一些瀏覽器會記住最後一個選擇,並在頁面重新加載時自動跳到它 - 這不應該算作已被選中的選項。好的使用jquery。
我希望能夠在我的選擇輸入指定HTML5風格的佔位符文本,就像這樣:如何快速將佔位符文本分配給所有尚未選中的選定元素?
<select name='blah' placeholder='select one'>
但是,我需要的佔位符文本不被可選元素,而不是顯示在所有如果選擇包含已經選擇的<option>
。另一方面,我知道一些瀏覽器會記住最後一個選擇,並在頁面重新加載時自動跳到它 - 這不應該算作已被選中的選項。好的使用jquery。
這比看起來更容易 - 只是遍歷每個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語句的。
使用Select2:
$("[name='blah']").select2({
placeholder: "select one",
allowClear: true
});
'$()ready',真的?。順便說一句,'size()'已過時 –
是不是夠了:'$('select:not(:has(option))')。append(function(){
@ A.Wolff不,隱藏是不夠的。在某些瀏覽器中,隱藏的選項仍然可以通過鍵盤來選擇,所以它必須被禁用。不記得爲什麼readonly是必需的。 – Benubird