专栏首页magicodesEasyUI之Form load函数IE8下设置Radio或Checkbox的BUG

EasyUI之Form load函数IE8下设置Radio或Checkbox的BUG

EasyUI的form的load函数很好用,表单赋值就靠它了,简单方便。我们可以指定url以Ajax加载,如:

1: $('#ff').form('load', 'ajax/common')

JSON如下:

也可以指定json,比如:

1: $('form').form('load',  {"初审申请日期":"2013-05-30","伦理委员会受理编号":"123234",
   2: "是否否决过":"是","是否终止过":"是","主要研究者姓名":"37","主要研究者单位":"123"
   3: ,"主要研究者科室":"上海市XXXXXXXX医院","主要研究者联系电话":"123",
   4: "主要研究者联系传真":"123","主要研究者联系Email":"123",
   5: "主要研究者指定联系人姓名":"123","主要研究者指定联系人电话":"123",
   6: "主要研究者指定联系人Email":"123","专业负责人":"34","研究方案名称":"123123123",
   7: "研究方案编号":"123123123","申办者名称":"123123123","申办者地址":"123123123",
   8: "申办者联系人":"123123123","申办者电话":"1231231231","临床监查员姓名":"1232312312"
   9: ,"临床监查员电话":"12312313","本中心招募受试者人数":"12313123","总人数":"123123123",
  10: "预期试验期限开始":"2013-06-15","预期试验期限结束":"2013-06-25","试验用品":"药物",
  11: "产品名称":"werqre","药物分类":"种类一","医疗器械分类":"种类一","试剂分类":"种类一",
  12: "使用方式":"创伤性","多中心试验":"是","研究形式":"第一期","研究形式观察":"观察",
  13: "研究对象":"正常人","年龄范围18-44":"18-44","儿童年龄小于1":"小于1","弱势群体孕妇胎儿":"孕妇胎儿","弱势群体文盲":"文盲","要求排除对象女性":"女性","要求排除对象其他补充":"","特殊条件隔离区":"隔离区","特殊条件管制药品":"管制药品","特殊条件器官移植备注":"","特殊条件其他备注":"","利益冲突声明":"123123"});

不过需要注意一点的是,其是根据控件的name属性来匹配的。

最近在使用EasyUI时,发现表单上如果使用radio时,在IE8会加载出错,错误如下:

“in”的操作数无效: 缺少 Object

对于这种问题,只能见招拆招了。首先分析Jquery.easyui.min.js,很快就可以发现,判断代码在这里:

1: function _3fa(name,val){
   2: var rr=$(_3f7).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]");
   3: rr._propAttr("checked",false);
   4: rr.each(function(){
   5: var f=$(this);
   6: if(f.val()==String(val)||$.inArray(f.val(),val)>=0){
   7: f._propAttr("checked",true);
   8: }
   9: });
  10: return rr;
  11: };

因为是IE8有问题,那么可以在rr上设置一个断点,并且设置一个条件,比如:

这个条件值是radio的name。

跟踪下来就会发现,bug在这里:

1: if(f.val()==String(val)||$.inArray(f.val(),val)>=0){
   2: f._propAttr("checked",true);
   3: }

在调试窗口输入就会发现:

看来这还是Jquery的bug,不过不能算bug吧,所谓拉屎不出不能怪坑太小,开发者不判断,不能怪别人,于是bug很好解决了:

1: function _3fa(name,val){
   2: var rr=$(_3f7).find("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]");
   3: rr._propAttr("checked",false);
   4: rr.each(function(){
   5: var f=$(this);
   6: if(f.val()==String(val)|| ($.isArray(val) && $.inArray(f.val(),val)>=0)){
   7: f._propAttr("checked",true);
   8: }
   9: });
  10: return rr;
  11: };

所以有bug不要怕,只要有办法找到原因就好(开发人员工具一定要用好,但不要盲目下手)。希望EasyUI的下一个版本能够解决该问题。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何基于k8s快速搭建TeamCity(YAML分享)

    最近有朋友基于之前的博客《Docker最全教程之使用TeamCity来完成内部CI、CD流程(十七)》搭建TeamCity时出现了一些问题,由于平常比较忙,没有...

    雪雁-心莱科技
  • 长沙.NET技术社区正式成立

    感谢大家的关注,请允许我冒昧的向大家汇报长沙.NET技术社区第一次交流会的会议进展情况。

    雪雁-心莱科技
  • 工欲善其事必先利其器——办公篇

    看起来办公软件和产品、开发管理没多大关系,但是对于一个高效的团队来说,统一的办公软件是必须的。office和wps总有一些不兼容,脑图有Xmind、Freemi...

    雪雁-心莱科技
  • Thinkphp修改一句代码,使得foreach标签支持对象,增加变量[数组对象]混合解析法!

    Eller
  • 4399AT Appium环境快速搭建

    感谢使用者的反馈。现对appium的安装方式进行了优化 ,如果速度慢,就是度娘的问题;我们直接就整理优化了下,直接在网盘下载appium,然后配置下就可以了。

    厦门-安仔
  • 用vue开发一个所谓的数独

    最近的后台管理系统页面,功能暂时没有新的需求,就在想首页放什么东西,最近我想到的就是放个所谓的数独,为什么是所谓的数独,因为规则不同于标准的数独,只要求每一行每...

    守候i
  • 「docker实战篇」python的docker爬虫技术-移动端自动化测试工具appium介绍和安装(六)

    PS:这里只是安装和介绍appium,其实并不难,后面会集合实际需求来灵活的使用。

    IT故事会
  • SpringJDBC

    除了Spring自带的Jar包,还要下载几个Jar包,这里我吐槽下CSDN,下个Jar包都要积分,真是想钱想疯了,其实可以Google得到

    用户3112896
  • Android硬件加速相关问题总结

    从Android 3.0开始就支持硬件加速,充分利用GPU的特性,使得绘制View的时候更加平滑。例如在ListView(GridView)或者WebView中...

    阳仔
  • 如何在SpringBoot中异步请求和异步调用

    链接 | cnblogs.com/baixianlong/p/10661591.html

    一个优秀的废人

扫码关注云+社区

领取腾讯云代金券