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,如需转载请自行联系原作者

相关文章
|
9月前
|
开发工具 git
解决pre-commit hook failed (add --no-verify to bypass)的问题
该文介绍了两种免去Git预提交钩子(pre-commit)的方法。一是直接进入项目.git/hooks目录,使用`rm -rf ./git/hooks/pre-commit`命令删除pre-commit文件。二是提交时添加`--no-verify`参数,如`git commit --no-verify -m&quot;XXX&quot;`,以跳过预提交检查。
391 0
|
资源调度
No change to package.json was detected. No package manager install will be executed.怎么解决
这个提示是由于没有对 package.json 文件进行更改所导致的,因此无需运行包管理器的安装。
460 0
|
关系型数据库 MySQL C#
【C#】【MySQL】【GridView】删除出现Parameter index is out of range
【C#】【MySQL】【GridView】删除出现Parameter index is out of range
140 0
【C#】【MySQL】【GridView】删除出现Parameter index is out of range
loaded the "xxx" nib but the view outlet was not set 错误的解决办法。
loaded the "xxx" nib but the view outlet was not set 错误的解决办法。
237 0
|
.NET 开发框架 前端开发
|
.NET
艾伟:Tip:自定义UpdatePanelTrigger
  大家在使用UpdatePanel的时候有没有遇到过这种情况呢?   页面上放置着3到4的UpdatePanel,它们互相独立,并且UpdateMode都是Condition,这意味着没有哪个UpdatePanel每次都会更新。
978 0
|
数据库 数据安全/隐私保护 .NET