2013-05-06 89 views
0

不工作我有两个下拉列表,第二个下拉应当某事在第一个下拉列表改变,这是在Firefox中工作正常,但不是在IE改变。 (IE9)。然后在第二个下拉列表中,我循环显示这些项目,并隐藏其中的一些项目。下拉列表更改功能在IE9

var intermin = '${intermin}'; 
var intermin2=intermin.substring(1,3); 

$('#startSemester').change(function() { 

    var start=$('#startSemester').val(); 
    var end=$('#endSemester').val(); 
    var start1=start.substring(0,1); 
    var start2=start.substring(1,3); 
    var start3=""; 
    var end3=""; 
    if (start1=="H"){ 
     start3="2"; 
    } 
    else 
     start3="1"; 
    var start4=start2+start3; 

    $('#endSemester option').removeAttr("disabled"); 
    var endSemesters= $('#endSemester'); 

     $.each($('option', endSemesters), function(index, value) { 
      var end= ($(this).val()); 
      var end2=end.substring(1,3); 
      var end1=end.substring(0,1); 
      if (end1=="H"){ 
       end3="2"; 
      } 
      else 
       end3="1"; 
      var end4=end2+end3; 
      $('#endSemester ' + 'option' + '[value =' + end + ']').show(); 
      if (end4 < start4 || end2 > intermin2) { 
       $('#endSemester ' + 'option' + '[value =' + end + ']').hide(); 
      } 
     }); 
}); 

是否有某种方式可以在IE中工作。

+1

不确定,但var'end'可能是一个保留字。 你可以改变它,然后再试一次吗? – 2013-05-06 12:17:25

+0

@TimVermaelen负:保留字列表(https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Reserved_Words) – jbabey 2013-05-06 12:28:26

+0

不,我改endsem,并没有帮助。 – brbe24 2013-05-06 12:39:07

回答

0

与IE的问题是隐藏选项部分。 IE在选项元素上不支持太多的CSS。 尤其是display: none这就是.hide()所做的。

为此我认为这是最适合你禁用选项。

var changeOption = $('#endSemester ' + 'option' + '[value=' + end + ']'); 

changeOption.prop("disabled", false); 
if (parseInt(end4) < parseInt(start4) || parseInt(end2) > parseInt(intermin2)) { 
    changeOption.prop("disabled", true); 
} 

可以在不同的浏览器测试:http://jsfiddle.net/tive/wU6XL/

或者如果你足够执着找到一个插件:

  • 隐藏select控制和使用替代ul li结构
  • 包装<option />与跨度(demo1demo2

PS:你可能要相应地更改选项值,因为我对你的HTML没有意见。

+0

如何从选择的DOM中删除选项,并将它添加到某个数组中的某个地方需要稍后添加回来。 – crush 2013-05-06 14:57:20

+0

我相信其中的一个演示就是这样的。底线是你需要一个替代方案来隐藏选项元素X浏览器。 – 2013-05-06 15:03:33

+0

它的作品,选项灰色,但它不如隐藏美丽。 – brbe24 2013-05-07 06:34:27

-2

嘿,请参阅该代码

<asp:DropDownList ID="ddlWeeklyWeightIn" runat="server" ClientIDMode="Predictable"> 
      <asp:ListItem>1</asp:ListItem> 
      <asp:ListItem>2</asp:ListItem> 
      <asp:ListItem>3</asp:ListItem> 
      <asp:ListItem>4</asp:ListItem> 
     </asp:DropDownList> 

JS代码是

$('#ddlWeeklyWeightIn').on("change", function() { 
      alert($(this).val()); 
     }); 

请参阅链接See Demo

希望它可以帮助你。

+1

这应该如何帮助? – crush 2013-05-06 12:54:41

+0

您不能像这样定位ASP.NET控件,页面上的ID呈现方式不同。 – tymeJV 2013-05-06 12:56:05

+0

我同意但如果你给ClientIDMode =“可预测”,那么没有代码的伤害。我只是试图帮助你,这就是为什么我已经创建了演示给你,我只选择了html控件。希望你不要错过 – 2013-05-06 13:03:21