2013-06-05 179 views
0

我有一個被過濾一個下拉列表(例如..(toggleOptionVisibility把一個跨度,在期權,如果屬實,跨度爲可見)):的jQuery選擇的選項

case 'Actimel drank naturel': 
      $(eenheid + ' option[value="101"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="102"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="103"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="116"]').toggleOptionVisibility(true); 
      break; 
case 'Roosvicee multivit (siroop)': 
      $(eenheid + ' option[value="101"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="102"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="103"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="104"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="111"]').toggleOptionVisibility(true); 
      $(eenheid + ' option[value="116"]').toggleOptionVisibility(true); 
      break; 

過濾工作,只是顯示一個例子至於我怎麼做。

現在的問題是,無論我在提交表單時選擇什麼,selected =「selected」都是用戶選擇的任何東西(它在IE中工作),但下拉列表本身顯示Firefox中的第二個值和Chrome中的最後一個值。

即使在Firefox和Chrome中,selected =「selected」仍然是用戶輸入的內容。

這裏是我的問題,你們有沒有知道爲什麼會發生這種情況,爲什麼它在IE中運行而不是Chrome/Firefox?

因爲每個人都喜歡代碼,我會多發一點。

$(eenheid + ' option').toggleOptionVisibility(false); 

要在過濾之前隱藏所有選項,以確保只顯示過濾的選項。

回答

0
$('select option[value="..."]').toggleOptionVisibility(false); 
$('select').val($('#select-test > option:first')); 

若要選擇的值:

$('select option:selected').val() 

例子:http://jsfiddle.net/d3FuV/5/

+0

正如我所說,篩選工作正常,沒有任何問題存在,但.prop( '禁用',真正的);在IE/safari中不起作用。這就是爲什麼我在IE中使用toggleOptionVisibility – Conceptual

+0

做到這一點,被禁用的值只是顯示禁用,並沒有消失。 – Conceptual

+0

我剛更新了我的帖子。新的jsfiddle鏈接在Chrome,IE和Safari中運行。禁用的值在IE/Safari中仍然可見,它們不支持'select option'上的'display:none'。如果你不想看到它們,你應該'.remove()'並且如果需要的話保存在一個變量中。 –

1

周邊<option><span>討論:

interface HTMLSelectElement : HTMLElement { 
    ... 
    readonly attribute HTMLCollection selectedOptions; 
    ... 
}; 

selectedOptions必須最大兼容性列表<option><optgroup>。不禁止使用<span>,但自負風險

看到http://www.w3.org/TR/html5/forms.html#the-select-element

+0

刪除選項並將它們存儲在可擴展存儲中。謝謝。 – Conceptual