JQuery操作Select的Options的Bug(IE8兼容性視圖模式)
更新時(shí)間:2013年04月21日 15:39:56 作者:
JQuery在IE8兼容性視圖模式下操作Select的Options的Bug在本文進(jìn)行重現(xiàn)并給出詳細(xì)的解決方法,感興趣的朋友可以參考下哈,希望對(duì)你有所幫助
Bug現(xiàn)場:
通過開發(fā)人員工具查看,下拉列表框是有Options的,但你點(diǎn)擊選擇的時(shí)候卻什么也不顯示。
重現(xiàn)步驟:
該問題發(fā)生在級(jí)聯(lián)下拉框的情況,第一個(gè)列表改變,第二個(gè)列表的值跟著改變!
本例中使用以下方法綁定數(shù)據(jù):
//綁定下拉框
//ctnSelector:下拉框ID,帶#號(hào),
//jsonData:JSON數(shù)據(jù),
//txtField:文本字段名稱,
//valField:值字段名稱,
//strOptions:默認(rèn)填加的項(xiàng)
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導(dǎo)致的問題。
}
optList += "<option value='" + jsonData[jitem][valField] + "'>" + jsonData[jitem][txtField] + "</option>";
}
}
$(ctnSelector).html(optList);
}
正常加載時(shí)不會(huì)出現(xiàn)任何問題!
但當(dāng)因第一個(gè)下拉框的值改變,而第二個(gè)下拉框的選項(xiàng)都被清空了,
然后你還是去點(diǎn)第二個(gè)下拉框試圖去選擇一項(xiàng)后,
再去更改第一個(gè)下拉框的選項(xiàng),
你會(huì)發(fā)現(xiàn)之前第二個(gè)下拉框中顯示的與第一個(gè)下拉框?qū)?yīng)的項(xiàng)卻怎么也顯示不出來了,
只能顯示第一個(gè),或是通過腳本設(shè)置為選中的一個(gè)!
解決方案:
使用DOM的方法去操作Options,代碼如下:
//綁定下拉框
//ctnSelector:下拉框ID,帶#號(hào),
//jsonData:JSON數(shù)據(jù),
//txtField:文本字段名稱,
//valField:值字段名稱,
//strOptions:默認(rèn)填加的項(xiàng)
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導(dǎo)致的問題。
}
var newOption = document.createElement("OPTION");
newOption.text = jsonData[jitem][txtField];
newOption.value = jsonData[jitem][valField];
sel.options.add(newOption);
}
}
}



通過開發(fā)人員工具查看,下拉列表框是有Options的,但你點(diǎn)擊選擇的時(shí)候卻什么也不顯示。
重現(xiàn)步驟:
該問題發(fā)生在級(jí)聯(lián)下拉框的情況,第一個(gè)列表改變,第二個(gè)列表的值跟著改變!
本例中使用以下方法綁定數(shù)據(jù):
復(fù)制代碼 代碼如下:
//綁定下拉框
//ctnSelector:下拉框ID,帶#號(hào),
//jsonData:JSON數(shù)據(jù),
//txtField:文本字段名稱,
//valField:值字段名稱,
//strOptions:默認(rèn)填加的項(xiàng)
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導(dǎo)致的問題。
}
optList += "<option value='" + jsonData[jitem][valField] + "'>" + jsonData[jitem][txtField] + "</option>";
}
}
$(ctnSelector).html(optList);
}
正常加載時(shí)不會(huì)出現(xiàn)任何問題!
但當(dāng)因第一個(gè)下拉框的值改變,而第二個(gè)下拉框的選項(xiàng)都被清空了,
然后你還是去點(diǎn)第二個(gè)下拉框試圖去選擇一項(xiàng)后,
再去更改第一個(gè)下拉框的選項(xiàng),
你會(huì)發(fā)現(xiàn)之前第二個(gè)下拉框中顯示的與第一個(gè)下拉框?qū)?yīng)的項(xiàng)卻怎么也顯示不出來了,
只能顯示第一個(gè),或是通過腳本設(shè)置為選中的一個(gè)!
解決方案:
使用DOM的方法去操作Options,代碼如下:
復(fù)制代碼 代碼如下:
//綁定下拉框
//ctnSelector:下拉框ID,帶#號(hào),
//jsonData:JSON數(shù)據(jù),
//txtField:文本字段名稱,
//valField:值字段名稱,
//strOptions:默認(rèn)填加的項(xiàng)
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導(dǎo)致的問題。
}
var newOption = document.createElement("OPTION");
newOption.text = jsonData[jitem][txtField];
newOption.value = jsonData[jitem][valField];
sel.options.add(newOption);
}
}
}
您可能感興趣的文章:
- jQuery獲取select選中的option的value值實(shí)現(xiàn)方法
- JQuery動(dòng)態(tài)添加Select的Option元素實(shí)現(xiàn)方法
- JS & JQuery 動(dòng)態(tài)添加 select option
- jQuery操作Select的Option上下移動(dòng)及移除添加等等
- JQuery中對(duì)Select的option項(xiàng)的添加、刪除、取值
- 刪除select中所有option選項(xiàng)jquery代碼
- 淺析jQuery對(duì)select操作小結(jié)(遍歷option,操作option)
- jQuery解決下拉框select設(shè)寬度時(shí)IE 6/7/8下option超出顯示不全
- jquery操作select option 的代碼小結(jié)
- jQuery動(dòng)態(tài)產(chǎn)生select option下拉列表
相關(guān)文章
jQuery EasyUI NumberBox(數(shù)字框)的用法
jQuery EasyUI 數(shù)字框(NumberBox)用法2010-07-07
jquery實(shí)現(xiàn)的判斷倒計(jì)時(shí)是否結(jié)束代碼
在一些購物網(wǎng)站經(jīng)常會(huì)遇到倒計(jì)時(shí)的功能,例如某些商品在一定期限內(nèi)搞活動(dòng),下面小編給大家分享一段代碼關(guān)于jquery實(shí)現(xiàn)的判斷倒計(jì)時(shí)是否結(jié)束代碼,希望對(duì)大家有所幫助2016-02-02
jQuery實(shí)現(xiàn)移動(dòng)端滑塊拖動(dòng)選擇數(shù)字效果
這篇文章主要介紹了jQuery實(shí)現(xiàn)移動(dòng)端滑塊拖動(dòng)選擇數(shù)字效果,jQuery實(shí)現(xiàn)移動(dòng)端滑塊拖動(dòng)效果,感興趣的小伙伴們可以參考一下2015-12-12
jquery attr()設(shè)置和獲取屬性值實(shí)例教程
在JS中設(shè)置節(jié)點(diǎn)的屬性與屬性值用到setAttribute(),獲得節(jié)點(diǎn)的屬性與屬性值用到getAttribute(),而在jquery中,只需要用到attr()這個(gè)函數(shù)就可以了。attr是attribute(屬性)的縮寫。2016-09-09
在JavaScript的jQuery庫中操作AJAX的方法講解
這篇文章主要介紹了在JavaScript的jQuery庫中操作AJAX的方法講解,包括利用jQuery簡化Ajax開發(fā)部分的內(nèi)容,需要的朋友可以參考下2015-08-08

