2011-04-19 41 views
0

嘿,不知道我是否正在以正確的方式進行操作。我有兩個不同的選擇盒裝。需要發生什麼情況是當選擇框1中的某個項目時,框2中的某些項目被隱藏。我在FF中工作得很好,但在IE中沒有......想法?Javascript隱藏不在IE中工作的選擇框元素

<div> 
    <label class="form_label">Apparel</label> 
    <select id="Choices" size="1" style="clear: right;" onchange"changeThis();"> 
     <option value="select">Pick Your Product</option> 
     <option value="1">choice 1</option> 
     <option value="2">choice 2/option> 
     <option value="3">choice 3</option> 
    </select> 
</div> 
<div> 
    <label class="form_label">Size</label> 
    <select id="Sizes" size="1" style="clear: right;"> 
     <option value="select">Choose Your Size</option> 
     <option value="SC">Small Child</option> 
     <option value="IC">Intermediate Child</option> 
     <option value="MC">Medium Child</option> 
    </select> 
</div> 

...

功能changeThing(選擇)

{ 
    var item = document.getElementById("Choices"); 
    var size = document.getElementById("Sizes"); 
    var selitem = item.options[item.selectedIndex].value; 

    if(selitem == '2546') 
    { 
     for(i=0; i<2; i++) 
     { 
      size[i].style.display = 'none'; 
      //alert(size[i]); 
     } 
    } 
+0

你可能會發現一些見解http://stackoverflow.com/questions/1271503/hide-options-in-a-select-list-using-jquery – chprpipr 2011-04-19 19:30:55

回答

0

這取決於您如何觸發調用changeThing()函數的事件。不確定關於IE9,但IE8和背面onChange事件有問題。它基本上避免在IE中。您必須改用onClick。

如果您使用jQuery來觸發事件,那麼onchange事件應該在所有瀏覽器(甚至IE)中正確運行。不知道其他Javascript庫如何做。

0

你需要完全刪除這個選項才能在IE中工作。

size.remove(i);

所以你需要存儲你的選擇在陣列並在需要時加載它回來。

1

前幾天我有同樣的問題。 IE不允許使用visible:hidden或display:none作爲選項元素。

您可以解決這個問題,將select1的選項存儲在變量中。這個變量將包含所有可能的值,所以當select1的值發生變化時,您可以刪除select2的所有值,然後從變量中獲取所需的選項以將其放入select2。

總結:

  1. 存儲所有可能的值在變量
  2. 當選擇1改爲刪除選擇2
  3. 過濾器的所有選項的選項(從步驟1的varible獲取這些值),你需要和放入select2中
1

您無法顯示:none刪除將完全刪除它,如果您希望用戶不要選擇它使用已禁用。你可以做這樣的事情

function changeThing() 
{ 
var item = document.getElementById("Choices"); 
var size = document.getElementById("Sizes"); 
var selitem = item.options[item.selectedIndex].value; 

if(selitem == '3') 
{ 
    for(i=1; i<2; i++) // filter logic here 
    { 
     size[i].disabled = true; //false - to reset 
     //alert(size[i]); 
    } 
} 
size.selectedIndex = 0; // reset the selection so a disabled item may not be selected. } 
相關問題