2013-09-24 68 views
2

另一個新問題,所以請裸露在我身邊。我有一個選擇器,看起來像這樣:禁用選擇器的一個選項,以便它不能被刪除

<select id="patientSelect"> 
    <option disabled selected style='display: none;' id="patient0"> 
     Incoming Patients</option> 
    <option id="patient1"></option> 
    <option id="patient2"></option> 
</select> 

因爲我有點想爲選擇器的佔位符類型文本(即第一個選項)。用我的javascript,我想這樣做,如果選定的選項耐心1,你點擊一個按鈕,它將被刪除,並會回去顯示殘疾的'傳入患者'的東西。 JavaScript的:

$(".ui-btn").click(function(){ 
    remove(); 
    $('#patientSelect :selected').attr('selected', '0'); 
    $('#patientSelect').change(); 
}); 

function remove(){ 
    var x = document.getElementById("patientSelect"); 
    x.remove(x.selectedIndex); 
} 

問題是,它始終刪除1個多選項,所以如果我擺脫了「patient2」的想跑刪除()列表變成長的空白列表。所有的幫助表示讚賞,請不要太苛刻。 :P

編輯 對不起,基本上我想要的文字「接收病人」(這是我選擇的第一個選項)永遠不會被刪除。無論函數remove()'嘗試運行多少次。它可以很好地刪除其他選項,只是從來沒有第一個選項。 這可能甚至是不可能的,我不知道.. 如果有另一種方式來獲取文本到選擇沒有我不會有事的選項太:-)

也許是這樣的:

function remove(){ 
    if(option != 1){ 
     var x = document.getElementById("patientSelect"); 
     x.remove(x.selectedIndex); 
    } 
} 
+0

你能解釋一下你想要的這個例子http://jsfiddle.net/arunpjohny/ynD6E/1/ –

+0

做,爲什麼你就不能檢查的selectedIndex == = 0,那麼不要刪除? –

回答

1

嘗試

var $ps = $('#patientSelect'); 
$(".ui-btn").click(function() { 
    var $sel = $ps.find('option:selected') 
    if ($sel.index() > 0) { 
     $sel.remove(); 
     $ps.val($ps.find('option:eq(0)').val()) 
    } 
}); 

演示:Fiddle

+1

我會依賴'prop('selectedIndex')'而不是'val()'。它更加靈活和可維護。 – plalx

+0

太棒了,效果很棒!非常感謝 :-) – Julia

1

你可以試試這個。

$(".uibtn").click(function(){ 
    remove(); 
    $('#patientSelect').append("<option disabled selected style='display: none;' id='patient0'>Incoming Patients</option>"); 
    $('#patientSelect').change(); 
}); 

function remove(){ 
    var x = document.getElementById("patientSelect"); 
    x.remove(x.selectedIndex); 
} 

入住這http://jsfiddle.net/7yR5V/

相關問題