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;
};
posted @ 2012-08-10 14:35  EdisonZ  阅读(5188)  评论(0编辑  收藏  举报