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 相关文章推荐
JavaScript入门教程(6) Window窗口对象
Jan 31 Javascript
jQuery 加上最后自己的验证
Nov 04 Javascript
jQuery 常见开发使用技巧总结
Dec 26 Javascript
js模仿html5 placeholder适应于不支持的浏览器
Jan 13 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
如何让浏览器支持jquery ajax load 前进、后退功能
Jun 12 Javascript
深入解析JavaScript编程中的this关键字使用
Nov 09 Javascript
JS实现的Unicode编码转换操作示例
Apr 28 Javascript
Angular实现下载安装包的功能代码分享
Sep 05 Javascript
解决layui表格内文本超出隐藏的问题
Sep 12 Javascript
vue-router的hooks用法详解
Jun 08 Javascript
AJAX检测用户名是否存在的方法
Mar 24 Javascript
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中在PDO中使用事务(Transaction)
2011/05/14 PHP
Linux环境下搭建php开发环境的操作步骤
2013/06/17 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
javascript编程起步(第六课)
2007/02/27 Javascript
alert和confirm功能介绍
2014/05/21 Javascript
14款经典网页图片和文字特效的jQuery插件-前端开发必备
2015/08/25 Javascript
第一次接触神奇的Bootstrap导航条
2016/08/09 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
JavaScript数组和对象的复制
2017/03/21 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
javascript中函数的写法实例代码详解
2018/10/28 Javascript
vue实现新闻展示页的步骤详解
2019/04/11 Javascript
微信小程序bindtap事件与冒泡阻止详解
2019/08/08 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
Nuxt默认模板、默认布局和自定义错误页面的实现
2020/05/11 Javascript
Vue自动构建发布脚本的方法示例
2020/07/24 Javascript
[01:04]DOTA2上海特锦赛现场采访 FreeAgain遭众解说围攻
2016/03/25 DOTA
[00:34]TI7不朽珍藏III——地穴编织者不朽展示
2017/07/15 DOTA
python3.3实现乘法表示例
2014/02/07 Python
基于python yield机制的异步操作同步化编程模型
2016/03/18 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
浅谈pandas中DataFrame关于显示值省略的解决方法
2018/04/08 Python
python opencv实现证件照换底功能
2019/08/19 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
浅谈pymysql查询语句中带有in时传递参数的问题
2020/06/05 Python
浅析pandas随机排列与随机抽样
2021/01/22 Python
美国领先的宠物用品和宠物食品零售商:Petco
2020/10/28 全球购物
行政办公员自我评价分享
2013/12/14 职场文书
校长就职演讲稿
2014/01/06 职场文书
工程专业求职自荐书范文
2014/02/08 职场文书
落实八项规定专题民主生活会对照检查材料
2014/09/15 职场文书
辩论赛开场白大全(主持人+辩手)
2015/05/29 职场文书
Nginx 路由转发和反向代理location配置实现
2021/11/11 Servers
实战 快速定位MySQL的慢SQL
2022/03/22 MySQL