2009-10-21 44 views
4

採取以下HTML選擇一個例子:jQuery的VAL()對HTML文本選擇優先於價值

<select name="selValues" id="selValues"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">5</option> 
    <option value="4">3</option> 
</select> 

如果我們編寫以下的jQuery聲明:

$('#selValues').val('2'); // Two will get selected 
$('#selValues').val('3'); // 3 will get selected instead of 5?? 

爲什麼它是這樣嗎?

+1

發表這個bug在上jquery.com – Marius 2009-10-21 07:34:26

+3

這是不是一個錯誤,這是一個功能,正如我在我的回答中解釋的那樣。 – 2009-10-21 07:48:22

回答

2

使用

$("#selValues option[value='3']").attr('selected', 'selected'); 

同樣在

jQuery - Select elements - tips and tricks

+0

是的,這個說法會起作用,我知道。但是,如果您嘗試選擇的值未出現在列表中,則所選值應更改爲-1(未選擇任何項目)。但是這並沒有發生這種說法。 – Zuhaib 2009-10-29 14:30:03

2

val()方法獲取或設置選定的文本。您可能需要使用的selectedIndex來代替:

$('#selValues').get(0).selectedIndex=2; 
2

好文章當選擇選項的jQuery看起來第一時間值,然後在文本的選項。它也順序通過選項。因此,$('#selValues').val('3')首先選擇選項3,但之後將選項更改爲選項4(因爲它具有文本「3」)。使用多選可以看到實際上這兩個選項都被選中

<select name="selValues" id="selValues" multiple="multiple"> 
    <option value="1">One</option> 
    <option value="2">Two</option> 
    <option value="3">5</option> 
    <option value="4">3</option> 
</select> 
+0

你是對的..但它不能解決我的問題..如果我在選擇器中指定值將工作。 '#selValues選項[value =「3」]' 但是,如果我試圖選擇的值不在列表中,則不應選擇任何項目。這不會發生jQuery,但發生在普通的JavaScript,如果我只寫: $('#selValues')[0] .value = ; – Zuhaib 2009-10-30 06:36:11

2

從JQuery 1.4開始,現在已經做出了明確的規定。現在將值來選擇,而不是文本值http://jquery14.com/day-01#backwards

如果您確實需要仍然值,然後選擇一個建議的方法是here