IE9 UpdatePanel出错问题

简介:

图省事经常用UpdatePanel与处理ajax,最近发现在IE9的某些版本下会出现脚本错误,而且都是在UpdatePanel内有DropDownList控件的情况下才出问题。

目前发现9.0.8112.16421版都有此问题,9.0.8080.16413版部分机器有此问题。

调试了一下脚本,发现问题出在DropDownList控件无法重建,因为回传的表单中此控件的value为空。我们知道DropDownList控件表现到客户端HTML中就是标准的select标签,它的value就是当前选中option的value,进而跟踪发现DOM中所有option元素的value属性都为undefined,但是其attributes集合中记录的value却是有值的,比较奇怪,这个问题在其它浏览器中包括IE9之前的浏览器中都不存在。

解决思路是替IE9把这些option的value都赋上值,代码也比较简单,页面加载的时候修正一下就可以了:

 
  1. function fixDropdown() { 
  2.     var options = document.getElementsByTagName("option"), i = 0; 
  3.     for (; i < options.length; ++i) {  //注意不能用 for(var i in options) 的写法 
  4.         options[i].value = options[i].attributes["value"].nodeValue; 
  5.     } 

以上代码是用原生javascript写的,换jquery会更简洁:

 
  1. function fixDropdown() { 
  2.     $("option").each(function(){ 
  3.         $(this).val($(this).attr("value") || $(this).context.attributes["value"].nodeValue); 
  4.     }); 

 

 

 

     本文转自 BoyTNT 51CTO博客,原文链接:http://blog.51cto.com/boytnt/774873,如需转载请自行联系原作者

相关文章
SAP MM 执行事务代码MRRL报错-No message was found for partner 100065 company code 0001-
SAP MM 执行事务代码MRRL报错-No message was found for partner 100065 company code 0001-
SAP MM 执行事务代码MRRL报错-No message was found for partner 100065 company code 0001-
打开My Lead detail page会发生timeout的错误的解决方案
url: https://:4080/sap/opu/odata/sap/CRM_LEAD/Leads(guid’3440B5B1-73AE-1ED5-8281-F76984271084’)?$expand=Products,ChangeDocs,LeadLogs 这个gateway的request会call CRM backend 三次: 第一次触发:
打开My Lead detail page会发生timeout的错误的解决方案
Item描述信息的更改也会导致will trigger ORDERADM_H的update函数触发
Item描述信息的更改也会导致will trigger ORDERADM_H的update函数触发
107 0
Item描述信息的更改也会导致will trigger ORDERADM_H的update函数触发
|
.NET
艾伟:Tip:自定义UpdatePanelTrigger
  大家在使用UpdatePanel的时候有没有遇到过这种情况呢?   页面上放置着3到4的UpdatePanel,它们互相独立,并且UpdateMode都是Condition,这意味着没有哪个UpdatePanel每次都会更新。
907 0
|
数据库 数据安全/隐私保护 .NET
|
.NET 开发框架 前端开发