遗忘海岸

江湖程序员 -Feiph(LM战士)

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

jquery操作下拉框(select)的一些说明

 

   公司网站目前的访问用户中使用IE6.0的站50%以上,所以必需兼容IE6.0,使用jquery在IE6.0中设置下拉框时会有以下一些问题

//==========测试代码===============

<head runat="server">
    <title>下拉框测试</title>
    <script type="text/javascript" src="/js/jquery/jquery-1.3.js"></script>
    <script type="text/javascript">
    $(function(){
      
       var $city= $("#ddlCity");
       //填充一些数据
       for(var i=1;i<=10;i++){
        $city.append($("<option/>").attr("value",i).text("可以选择的城市第:" +i));
       }
      
       //$city.width("100px");//IE6.0下需要自己调整下拉框的宽度
       var t=6;
       //setTimeout("$(\"#ddlCity\").val("+ t +");",1); //IE6下解决一,IE,火狐取值多有问题
       try{$city.val(6);}catch(e){} //IE6下解决二,select至少有一个静态option,IE取值有问题
       //$city.val(6);//ie6报错,fireFox,IE8.0正常
       alert($city.val());
       $("#ddlProvince").val(101);//全部正常
     }); 
    </script>
</head>
<body>
    <form id="form1" runat="server">
    <select id="ddlProvince" name="ddlProvince">
        <option value="0">请选择</option>
        <option value="1">北京</option>
        <option value="60">重庆</option>
        <option value="101">广东</option>
    </select>
    <select id="ddlCity" name="ddlCity">
      <option value="0">请选择</option>
    </select>
     <!-- <option value="0">请选择</option> 将ddlCity中的全部option清除-->
    <asp:Button ID="butSave" runat="server" onclick="butSave_Click" Text="Button" />
    </form>
</body>

//==========End 测试代码===================

测试说明:

 A:静态select项目

  静态select项目(可以通过服务器端脚本填充),可以直接使用$("#下拉框id").val(选中的value)进行设置.

  设置后使用$("#下拉框id").val();可以正确获取其值.

 

 B:有一项静态的

   包含动态创建立的option时,使用$("#selectId").val()

   动态创建的(包含一项静态的option如: <option value="0">请选择</option>),可以通过

   1.setTimeout("$(\"#下拉框id\").val("+value+")",1)设置.

   但是使用setTimeout后,使用$("#下拉框id").val();取值时则不正确,当然通常情况你的代码上下文保留有value值,

   没必要通过.val()去取,setTimeout缺点是异步执行的,setTimeout执行时的上下文通常不是当前函数域.

 

  2.使用try{$("#下拉框id").val();}catch(e){}来屏蔽错误,

  这个在firefox中跟IE6.0中多可以正常运行,但是IE6.0取值会出问题.

C:全部动态创建

  这种情况下使用try在IE6.0中也无发设置.

 

 另外IE6.0对动态创建的下拉项目,不能自动调整select宽度,需要手动调整.

 

 

posted on   遗忘海岸  阅读(1124)  评论(0编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
点击右上角即可分享
微信分享提示