2012-06-30 82 views
4

我有一個包含以下代碼的HTML文件中傳遞的值選擇選項:選擇通過可變

<select id="gouv" name="gouv"> 
...some options here... 
</select> 

和下面的jQuery代碼:

$('#gouv option[value="myvalue"]').attr("checked","checked"); 

這是你肯定知道設置值爲「myvalue」的選項來檢查哪個功能完美。

現在的問題是,我不知道我想設置爲選中選項的值,因爲這個值是存儲在全局變量中的某個函數的結果。爲了簡化起見,經過長時間的調試,我將問題簡化爲以下內容:

var ident="myvalue"; 
$('#gouv option[value=ident]').attr("checked","checked"); 

並且此代碼不起作用!

我想知道爲什麼它不起作用,我們不能將值作爲變量傳遞嗎?是否有任何解決方法呢?

+1

你試過'$('#gouv').val(ident)'? jQuery的'.val()'應該能夠設置select的值。 –

+0

@MarkEirich。 'val'有什麼關係? – gdoron

+0

'.val(value)'設置選擇的值。這不是你想要的嗎? –

回答

15
var ident="myvalue"; 
$('#gouv option[value="' + ident + '"]').attr("selected", "selected"); 

selected<option>checked是廣播!

,更好地利用prop如果您的jQuery版本> 1.6

$('#gouv option[value="' + ident +'"]').prop("selected", true); 

注意,你最好使用filter而不是屬性選擇:

$('#gouv option').filter(function(){ 
    return this.value == indent; 
}).prop("selected", true); 

Why you should use filter for value

如果您需要支持黑莓手機,他們有錯誤的選項。價值jQuery處理:

$('#gouv option').filter(function(){ 
    return $(this).val() == indent; 
}).prop("selected", true); 
+0

非常感謝你,現在我覺得自己像個白癡,以前我用過這個,完全忘了它。感謝您選中/選擇的評論,這只是寫這篇文章時的錯誤。我的jQuery版本很舊,所以不支持prop。你能告訴我爲什麼使用過濾器更好?再次感謝。 –

+0

@IlyesFerchiou。有一個鏈接指向我回答的其他問題,不需要再次複製它。你讀過它嗎? – gdoron

+0

不,我沒有,我會盡力去尋找它。再次感謝。只要網站允許,我會盡快接受答案。 –

4

jQuery的.val()see here)將選擇由值的選項:

var ident = "myvalue"; 
$('#gouv').val(ident); 

這相當於:

var ident = "myvalue"; 
$('#gouv option[value="' + ident + '"]').attr("selected", "selected"); 

但後者會有問題,如果ident包含任何雙引號。

+0

+1是最簡單,最好的方法。 – Bojangles

+0

好吧,這也可以工作,即使我不明白,我認爲在這種情況下,值會返回所有SELECT元素的值爲ident而不是所有的OPTION元素!但事情是,即使時間更長,第一個選項對雙引號沒有問題,如果字符串有雙引號,我不能將它初始設置爲變量,但我必須在設置時避開引號變量,接下來就沒有問題了。 –

+1

所以,非常感謝你的回答,這當然更簡單,但我的問題首先是爲什麼我不能使用它的方式我想用它和gdoron完美回答,我希望我可以設置2選擇的答案,但我不能,所以我會給你一個+1,並且再次感謝你花時間給我這個更簡單的解決方案。 –