Jquery EasyUI Form Load自动绑定Checkbox问题
问题原因
网站采用jquery EasyUi + Asp.net MVC开发,在数据的绑定中使用的easyui form的load方法,此方法可以很方便的将数据绑定的页面的控件中,而不需要单独设置。如需单独设置,只需在loadsuccess事件中增加相应处理方法即可。其中有一个模块的字段使用了checkboxlist,回绑使用自定义方法。在测试环境中没有问题,但一布署到生产环境,就会回绑不了,但是只要一开ie 9 的调试,就可以了,而且在控制台中出现日志输出,搜索jquery easy ui 源码,发现如下代码
function _372(name,val){ var form=$(_36f); var rr=$("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]",form); $.fn.prop?rr.prop("checked",false):rr.attr("checked",false); rr.each(function(){ var f=$(this); console.log(name+":"+f.val()+","+val); if(f.val()==String(val)){ $.fn.prop?f.prop("checked",true):f.attr("checked",true); } }); return rr; };
其中
console.log(name+":"+f.val()+","+val);
是在调试时往IE控制台中输出信息,但console方法只在控制台调试中才有效,所以在发布到正式环境时应该注释掉
问题解决
只要注释掉console代码即可,经查看,修改此方法即可实现对checkboxlist的回绑,不需要在loadsuccess中单独实现,实现代码
function _372(name,val){ var form=$(_36f); var rr=$("input[name=\""+name+"\"][type=radio], input[name=\""+name+"\"][type=checkbox]",form); $.fn.prop?rr.prop("checked",false):rr.attr("checked",false); rr.each(function(){ var f=$(this); //console.log(name+":"+f.val()+","+val); //修改:之前只能对应一个复选框,现在可以对应多个,可自动绑定 $.each(val.split(','),function(i,item) { if(f.val()==String(item)){ $.fn.prop?f.prop("checked",true):f.attr("checked",true); } }); }); return rr; };