2015-10-13 31 views
0

我使用jQuery .getJSON函數從數據庫動態獲取數據,並將數據追加到html選擇下拉列表中。我的JS代碼如下:禁用動態創建的下拉列表選項

$.getJSON('url', 
    function(data) { 
    var html = '<option value="">--Please select one--</option>'; 
    var len = data.length; 
    for (var i = 0; i < len; i++) { 
     html += '<option value="' + data[i].name + '">' + '</option>'; 
    } 
    html += '</option>'; 
    $('#names').html(html); 
    }); 

我的HTML:

<select id="names"></select> 

這正常啓動像這樣在頁面加載後: enter image description here

我想做什麼是後用戶單擊選擇選項並從列表中選擇一個可用選項,我想要禁用選項,以便用戶將被迫選擇一個有意義的名稱而不會返回到

我在網上查了一下,我發現的全部是硬編碼下拉選擇的解決方案。你能給一些建議嗎?

回答

2

有它disabledselected默認 - 所以一旦用戶點擊下拉菜單,他們必須選擇相應的選項:

var html = '<option value="" selected disabled>--Please select one--</option>'; 
+0

工作!很好,乾淨的答案! – OPK

1

,如果你想在「請選擇一個」選項tymeJV的回答是不錯的明顯依然存在,但不可選擇。如果您想徹底刪除選項,請參閱我的答案。

當您首次更改select的值時,您只需從選擇節點中刪除第一個選項節點。由於您使用的是jQuery,因此有一個非常有效的方法來執行此操作。

你可以做的是改變處理程序,將在選擇值的第一個變化被稱爲,這將有助於去除第一個選項添加:

$('#names').one('change', function(){ 
    $(this).find('option:first').remove(); 
}); 

jQuery的一個()函數一個在第一次調用後「未綁定」的處理程序,意思是在select元素第一次發生更改操作後處理程序將不再存在。

更多信息上一個():http://api.jquery.com/one/

+0

絕對是一個很好的解決方法。表示讚許,滿意,勝利。我接受了他的答案,因爲代碼少,現在適合我的需求。 – OPK