JQuery操作Select的Options的Bug(IE8兼容性视图模式)


Posted in Javascript onApril 21, 2013

Bug现场:

JQuery操作Select的Options的Bug(IE8兼容性视图模式)

JQuery操作Select的Options的Bug(IE8兼容性视图模式)

JQuery操作Select的Options的Bug(IE8兼容性视图模式)


通过开发人员工具查看,下拉列表框是有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 相关文章推荐
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
33个优秀的 jQuery 图片展示插件分享
Mar 14 Javascript
javascript事件函数中获得事件源的两种不错方法
Mar 17 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
Jan 28 Javascript
JQuery ZTree使用方法详解
Jan 07 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
JQuery实现ajax请求的示例和注意事项
Dec 10 jQuery
Angular.JS读取数据库数据调用完整实例
Jul 02 Javascript
小程序实现日历左右滑动效果
Oct 21 Javascript
微信小程序学习总结(二)样式、属性、模板操作分析
Jun 04 Javascript
Vue实现一种简单的无限循环滚动动画的示例
Jan 10 Vue.js
Jquery submit()无法提交问题
Apr 21 #Javascript
用表格输出1-1000之间的数字实现代码(附特效)
Apr 21 #Javascript
放弃用你的InnerHTML来输出HTML吧 jQuery Tmpl不详细讲解
Apr 20 #Javascript
对jQuery的事件绑定的一些思考(补充)
Apr 20 #Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 #Javascript
javascript中onclick(this)用法介绍
Apr 19 #Javascript
jQuery使用一个按钮控制图片的伸缩实现思路
Apr 19 #Javascript
You might like
木翼下载系统中说明的PHP安全配置方法
2007/06/16 PHP
用Simple Excel导出xls实现方法
2012/12/06 PHP
深入php 正则表达式的学习探讨
2013/06/06 PHP
php使用websocket示例详解
2014/03/12 PHP
PHP使用strrev翻转中文乱码问题的解决方法
2017/01/13 PHP
PHP的mysqli_ssl_set()函数讲解
2019/01/23 PHP
CSS+JS构建的图片查看器
2006/07/22 Javascript
使用EXT实现无刷新动态调用股票信息
2008/11/01 Javascript
jquery实现tr元素的上下移动示例代码
2013/12/20 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
JavaScript使用DeviceOne开发实战(二) 生成调试安装包
2015/12/01 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
理解JavaScript中Promise的使用
2016/01/18 Javascript
JavaScript随机生成颜色的方法
2016/10/15 Javascript
webpack打包并将文件加载到指定的位置方法
2018/02/22 Javascript
angular5 httpclient的示例实战
2018/03/12 Javascript
JS/HTML5游戏常用算法之碰撞检测 像素检测算法实例详解
2018/12/12 Javascript
微信小程序收货地址API兼容低版本解决方法
2019/05/18 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
python遍历文件夹,指定遍历深度与忽略目录的方法
2018/07/11 Python
Django model序列化为json的方法示例
2018/10/16 Python
PyCharm2018 安装及破解方法实现步骤
2019/09/09 Python
使用tqdm显示Python代码执行进度功能
2019/12/08 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
python中的 zip函数详解及用法举例
2020/02/16 Python
django template实现定义临时变量,自定义赋值、自增实例
2020/07/12 Python
声明struct x1 { . . . }; 和typedef struct { . . . }x2;有什么不同
2012/06/02 面试题
电气自动化自荐信
2013/10/10 职场文书
销售辞职报告范文
2014/01/12 职场文书
离婚协议书样本
2015/01/26 职场文书
2015年读书月活动总结
2015/03/26 职场文书
纪检监察立案决定书
2015/06/24 职场文书
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers