JQuery在IE8兼容性视图模式下操作Select的Options的Bug

简介: Bug现场: 通过开发人员工具查看,下拉列表框是有Options的,但你点击选择的时候却什么也不显示。 重现步骤: 该问题发生在级联下拉框的情况,第一个列表改变,第二个列表的值跟着改变! 本例中使用以下方法绑定数据: //绑定下拉框 //ctnSelector:...

Bug现场:

通过开发人员工具查看,下拉列表框是有Options的,但你点击选择的时候却什么也不显示。

重现步骤:

该问题发生在级联下拉框的情况,第一个列表改变,第二个列表的值跟着改变!

本例中使用以下方法绑定数据:

//绑定下拉框
//ctnSelector:下拉框ID,带#号, 
//jsonData:JSON数据, 
//txtField:文本字段名称, 
//valField:值字段名称, 
//strOptions:默认填加的项
function InitSelectOptions(ctnSelector, jsonData, txtField, valField, strOptions) {
    if ($(ctnSelector).length == 0) { return false; };

    $(ctnSelector).html('');
    var optList = strOptions;

    if (typeof (jsonData) != undefined) {
        for (var jitem in jsonData) {
            if (jitem == "insertAt" || jitem == "removeAt" || jitem == "moveTo") {
                continue; //解决flareJ.Base.js导致的问题。
            }
            optList += "<option value='" + jsonData[jitem][valField] + "'>" + jsonData[jitem][txtField] + "</option>";
        }
    }

    $(ctnSelector).html(optList);
}

正常加载时不会出现任何问题!

但当因第一个下拉框的值改变,而第二个下拉框的选项都被清空了,

然后你还是去点第二个下拉框试图去选择一项后,

再去更改第一个下拉框的选项,

你会发现之前第二个下拉框中显示的与第一个下拉框对应的项却怎么也显示不出来了,

只能显示第一个,或是通过脚本设置为选中的一个!

解决方案:

使用DOM的方法去操作Options,代码如下:

//绑定下拉框
//ctnSelector:下拉框ID,带#号, 
//jsonData:JSON数据, 
//txtField:文本字段名称, 
//valField:值字段名称, 
//strOptions:默认填加的项
function InitSelectOptions(ctnSelector, jsonData, txtField, valField, strOptions) {
    if ($(ctnSelector).length == 0) { return false; };
    $(ctnSelector).empty();

    var sel = $(ctnSelector).get(0);
    var newOpt = $(strOptions);
    var newOption1 = document.createElement("OPTION");
    newOption1.text = newOpt.text();
    newOption1.value = newOpt.val();
    sel.options.add(newOption1);

    if (typeof (jsonData) != undefined) {
        for (var jitem in jsonData) {
            if (jitem == "insertAt" || jitem == "removeAt" || jitem == "moveTo") {
                continue; //解决flareJ.Base.js导致的问题。
            }
            var newOption = document.createElement("OPTION");
            newOption.text = jsonData[jitem][txtField];
            newOption.value = jsonData[jitem][valField];
            sel.options.add(newOption);
        }
    }
}


目录
相关文章
|
JavaScript 前端开发
使用jQuery操作DOM元素
使用jQuery操作DOM元素
|
JavaScript 前端开发 索引
JQuery样式操作、click事件以及索引值-选项卡应用示例
JQuery样式操作、click事件以及索引值-选项卡应用示例
137 1
|
JavaScript
jQuery遍历div,判断是否为空,为空时执行某个操作
jQuery遍历div,判断是否为空,为空时执行某个操作
|
JavaScript
用JQuery实现选中select里面的option显示对应的div
用JQuery实现选中select里面的option显示对应的div
141 0
|
缓存 JavaScript
|
JavaScript 定位技术
jQuery鹰眼视图小地图定位预览插件minimap.js
这是一个jQuery小地图定位预览视图,默认左侧是页面主要内容,minimap.js的好处就是在它的右侧形成一个快速定位通道,产生一个缩小版的页面,即预览效果,可以点击并快速定位到页面的某个位置。简单实用,欢迎下载!
174 0
|
JavaScript 前端开发 安全
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
安全开发-JS应用&原生开发&JQuery库&Ajax技术&加密编码库&断点调试&逆向分析&元素属性操作
219 5
|
JavaScript 前端开发 API
前端框架与库 - jQuery基础与DOM操作
【7月更文挑战第18天】jQuery 是一个简化JavaScript任务的库,以其“write less, do more”理念著称。核心功能包括DOM操作、事件处理和Ajax。DOM操作如选择元素(`$(&quot;p&quot;)`、`$(&quot;#myDiv&quot;)`、`$(&quot;.myClass&quot;)`)、创建及添加元素、修改属性和内容。事件处理如绑定(`click`)和触发(`trigger`)。常见问题涉及`$`符号冲突(使用`jQuery`代替)、异步加载管理和选择器性能优化。了解并规避这些问题能提升jQuery使用效率。
164 0
N..
|
JavaScript 前端开发 容器
jQuery中的DOM操作
jQuery中的DOM操作
N..
213 1
|
前端开发 JavaScript