問題原因
網站采用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; };