2011-08-18 81 views
25

HTML:空白選項添加到選擇頂部,並使其在IE中選擇選項

<select id="dropdown"> 
    <option value="volvo">Volvo</option> 
    <option value="saab">Saab</option> 
    <option value="mercedes">Mercedes</option> 
    <option value="audi">Audi</option> 
</select> 

的jQuery:

$("#dropdown").prepend("<option value='' selected='selected'></option>"); 

當我在Firefox或Chrome運行此,下拉有新插入的空白選項被選中。當我在IE8中運行它時,它仍然選擇了沃爾沃。有任何想法嗎?

http://jsfiddle.net/YFu2h/

回答

34

更改它此,它會工作:

$("#theSelectId").prepend("<option value=''></option>").val(''); 

http://jsfiddle.net/YFu2h/1/

看來,IE只評估selected屬性時,第一次遇到select

+0

謝謝,這工作。 – wkm

+0

這將設置val爲空。刪除我最初擁有的任何選定項目 –

+0

@HarryBosh - ......這正是OP所要求的。 –

3

嘗試:

$("#dropdown").prepend(new Option('', '', true, true)); 
$("#dropdown option:first").attr("selected", "selected"); 

或者,如果你喜歡:

$("#dropdown").prepend("<option value=''></option>"); 
$("#dropdown option:first").attr("selected", "selected"); 

使用第一個選項是稍微更快。空白引號表示空白值和空白文本,因此可以根據需要填寫它們。您不需要預先選擇的屬性,現在我們在之後添加它們。這與Internet Explorer不相關,因爲它只是剛創建時才被識別爲被選中。

+0

謝謝,這工作。 – wkm

9

我不知道爲什麼你的代碼不能正常工作(也許它是與事實,即在IE瀏覽器,selectedIndex是隻讀的),但是,這樣做在IE:

$("#dropdown").prepend("<option value='' selected='selected'></option>"); 
$("#dropdown")[0].options[0].selected = true; 
+0

謝謝,這工作。 – wkm

相關問題