2012-03-05 84 views
0

我很難通過選項value =「X」選擇另一個下拉選項..我該怎麼做?用jquery選擇另一個下拉選項

<select id="type"> 
    <option value="all">All Types</option> 
    <option value="1">Comments</option> 
    <option value="2">Meanings</option> 
    <option value="3">Thoughts</option> 
</select> 

它的工作原理,如果我做下面的代碼,而是因爲我通常把類型總量(這樣評論13,含義6等),因此數字總是從一種形式轉換到另一種。

$("#type").val('Comments'); 

但是我怎麼選擇它基於價值=「X」或價值=「所有」

+0

我不知道,如果我得到這個權利,但你可以得到,例如,「備註」此選擇選項:'$(「#類型選項[值= 1]「)' – scumah 2012-03-05 19:06:51

回答

1

你混淆選項的文本與價值

$("#type").val(1);// will select option with text="Comments" 

如果你想要得到的文本並轉換爲所選

$('#type option').filter(function(){ 
    return $(this).text()=="Comments"; 

}).prop('selected',true) 
+0

好吧,我看到發生了什麼。當我執行$(「#type」).val('all')時,選項(我猜是在幕後?)確實發生了變化,因爲當我檢查POST時,它說全部選中了。然而,選項文本(註釋,含義等)不會改變,所以用戶仍然認爲他們是在他們最初選擇的任何東西上。 – Mike 2012-03-05 19:47:36

+0

但你正在做的是強制一個值,如果該值不存在於任何選項中,那麼沒有人被選中以顯示用戶 – charlietfl 2012-03-05 19:57:47

+0

那麼我將如何強制它顯示「所有類型」?我的下拉菜單總是不同的,所以有時它的所有類型500,所有類型343,所有類型0等。 – Mike 2012-03-05 20:03:41

0

你接近 - 只要撥打val()值的選項

var value="2"; 
$("#type").val(value) 

fiddle here

0

http://api.jquery.com/val/始終以/給出值屬性的數據。

嘗試http://jsfiddle.net/rKMmg/

+0

如何在飛行中更改它?因此可以說用戶將其更改爲2(含義)。然後他們點擊一個提交按鈕。發生這種情況時,我希望下拉菜單顯示所有內容。 val('all')這樣做(因爲我可以驗證POST),但下拉列表中的文本實際上並未更改爲所有類型 – Mike 2012-03-05 19:57:01

0

如果你想獲得基於超出文本的價值,你可以使用:contains

$('#type option:contains(Comments)').val(); 

否則,如果您想設置您可以使用相同的選擇的價值和設置所選擇的屬性:

$('#type option:contains(Comments)').prop('selected', true); 
+0

包含的內容非常危險。如果其他選項具有相似的文本,該怎麼辦? – charlietfl 2012-03-05 19:18:39

+0

如果這是一個問題,那麼是的,你的解決方案會更具決定性。 – scurker 2012-03-05 19:33:49

1
jQuery('#type option:contains("Comments")').prop('selected', true); 

編輯:看完這個之後,如果你使用下面的話,你可以根據價值或選擇文本來選擇:以下都將選擇你列表中的第二個項目:選項值爲1,註釋文本 - 任何suffex /其他文本諸如「評論33」等意見仍被支持。

var checkMe = '1'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

通過文字:

var checkMe = 'Comments'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

而不同之一:<option value="1">Comments 33</option>

var checkMe = 'Comments 33'; 
$('#typePick option:contains("'+checkMe+'"), #typePick option:[value="'+checkMe+'"]').prop('selected',true); 

注:在過去的三個例子,唯一的區別是分配給checkMe值。

看到這裏的工作示例:http://jsfiddle.net/a7SQT/1/

+0

嗯很好的選擇,謝謝。我很難讓它選擇'全部'選項。 – Mike 2012-03-05 20:12:25

+0

@Mike請參閱我發佈的示例,其中有一個選擇「全部」選項。 (「Click for All」按鈕設置它) – 2012-03-05 20:31:54

相關問題