2011-04-19 45 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. } 
相关问题