2013-02-25 61 views
5

我遇到了一個有趣的小問題,可能只是我很傻。JQuery將多個下拉選項設置爲選中

我有一個選擇框,看起來有點像這樣:

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 

的選項代表該月的天,上升到31

現在,我試圖選擇一個默認值當一個帶有信息的表單被加載(用於編輯)時,但我無法讓它正常工作。

我試圖用這個片段我在以前的一些做題發現:

$("#dom_ option[value$='" + 2 + "']").attr('selected', true); 

這條線運行,它設置第二個選項來選擇,但還設置其他2X或X2選項選擇爲好。例如,12和22也將被設置爲選中狀態。

但是,如果我用這個:

$("#dom_ option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
    else 
    { 
     $(this).attr('selected', false); 
    } 

}); 

然後正確的選擇會得到選擇,但SELECT框將不會被更新。

我必須手動撥打$("#dom_").val(2);後綴來更新方框。

所以,我的問題是,爲什麼第一個選項不工作,爲什麼第二個不自動刷新?

此外,究竟是通過$("#dom_")採取SELECT對象並調用它.val與採取的選項和設置selected爲true之間的區別?這兩個都發回相同的POSTGET數據嗎?

這是一個jsFiddle,希望能證明這一點。

如果有幫助,我使用JQuery 1.6.4,但我可以在jsFiddle中的一些新版本上重現相同的問題。

如果這個問題太簡單,我很抱歉。談到JavaScript和JQuery時,我仍然是一個業餘愛好者。

+0

是否有一個原因,你」重新做這與jQuery而不是隻是HTML屬性? – Colleen 2013-02-25 20:32:02

+0

'$(「#dom_ option [value ='2']」)。prop('selected',true);'如果你不需要2是一個變量... – 2013-02-25 20:41:42

回答

6

您使用的結尾是($=),而不是僅使用value=,它只會與您想要的值完全匹配。

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 
+0

哎呀,我在想什麼'$ ='做了。非常感謝! – zermy 2013-02-25 20:37:22

1

這聽起來像一個很簡單的設計,你不需要做這在JavaScript(即,如果它是靜態的內容,你只需要一個簡單的默認值)。你知道你可以將「selected」屬性應用到你的html選項標籤嗎?

<select id="dom_" name="dom_"> 
    <option value="1">1</option> 
    <option value="2" selected="selected">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
    ... 
+1

那麼,代碼是根據點擊的項目(它通過AJAX從後端獲取信息)動態選擇的,但是如果它是靜態的,我會這樣做。 – zermy 2013-02-25 20:40:05

1

兩者都應現在的工作

1)作爲每Jquery的Ends With Selector[name$="value"])將選擇具有與一個給定的字符串完全結束的值指定的屬性的元素。

$("#dom_ option[value='" + 2 + "']").attr('selected', true); 

2)在第二個例子,else情況下是不必要的,因爲它會重置selected選項

$("#dom option").each(function() 
{ 
    if ($(this).val() == 2) 
    { 
     $(this).attr('selected', true); 
    } 
}); 

入住此的jsfiddlehttp://jsfiddle.net/NUTWR/

+0

是的,我不應該在那裏拋出'$ ='。至於第二種選擇,我猜'else'會拋棄它,因爲每次迭代重置'selected'都會導致每次刷新'SELECT'框? 謝謝。 :) – zermy 2013-02-25 20:39:20

+0

@zermy歡迎您! – ssilas777 2013-02-25 20:41:21

相關問題