EasyUI扩展方法

http://uule.iteye.com/blog/2089867


EasyUI扩展方法:

 

1、我想指定textarea的行,但editor:{type:'textarea', options: {rows:'4'}}这样写不行。请问大家怎么配置才是指定行的啊?

配置Textarea不可拖动变大变小:

 

只能自己扩展 textarea 才能实现,配置不用修改,直接扩展就行

Js代码   收藏代码
  1. jQuery.extend(jQuery.fn.datagrid.defaults.editors, {    
  2.         combotree: {    
  3.             init: function(container, options){    
  4.                 var editor = jQuery('').appendTo(container);    
  5.                 editor.combotree(options);    
  6.                 return editor;    
  7.             },    
  8.             destroy: function(target){    
  9.                 jQuery(target).combotree('destroy');    
  10.             },    
  11.             getValue: function(target){    
  12.                 var temp = jQuery(target).combotree('getValues');    
  13.                 //alert(temp);    
  14.                 return temp.join(',');    
  15.             },    
  16.             setValue: function(target, value){    
  17.                 var temp = value.split(',');    
  18.                 //alert(temp);    
  19.                 jQuery(target).combotree('setValues', temp);    
  20.             },    
  21.             resize: function(target, width){    
  22.                 jQuery(target).combotree('resize', width);    
  23.             }    
  24.         },  
  25.         textarea: {      
  26.             init : function(container, options) {  
  27.             var input = $(  
  28.                     '')  
  29.                     .appendTo(container);  
  30.                 return input;  
  31.             },  
  32.             getValue : function(target) {  
  33.                 return $(target).val();  
  34.             },  
  35.             setValue : function(target, value) {  
  36.                 $(target).val(value);  
  37.             },  
  38.             resize : function(target, width) {  
  39.                 var input = $(target);  
  40.                 if ($.boxModel == true) {  
  41.                     input.width(width - (input.outerWidth() - input.width()));  
  42.                 } else {  
  43.                     input.width(width);  
  44.                 }  
  45.             }  
  46.         }      
  47.     });    

 

==========================================================================================

 

扩展jQuery easyui datagrid增加动态改变列编辑的类型  

 

Js代码   收藏代码
  1. $.extend($.fn.datagrid.methods, {    
  2.     addEditor : function(jq, param) {    
  3.         if (param instanceof Array) {    
  4.             $.each(param, function(index, item) {    
  5.                 var e = $(jq).datagrid('getColumnOption', item.field);    
  6.                 e.editor = item.editor;    
  7.             });    
  8.         } else {    
  9.             var e = $(jq).datagrid('getColumnOption', param.field);    
  10.             e.editor = param.editor;    
  11.         }    
  12.     },    
  13.     removeEditor : function(jq, param) {    
  14.         if (param instanceof Array) {    
  15.             $.each(param, function(index, item) {    
  16.                 var e = $(jq).datagrid('getColumnOption', item);    
  17.                 e.editor = {};    
  18.             });    
  19.         } else {    
  20.             var e = $(jq).datagrid('getColumnOption', param);    
  21.             e.editor = {};    
  22.         }    
  23.     }    
  24. });    

 使用方式:    

为password字段添加一个editor  

  

Js代码   收藏代码
  1. $("#gridId").datagrid('addEditor', {    
  2.                         field : 'password',    
  3.                         editor : {    
  4.                             type : 'validatebox',    
  5.                             options : {    
  6.                                 required : true    
  7.                             }    
  8.                         }    
  9.                     });    

   

 删除password的editor    

$("#gridid").datagrid('removeEditor', 'password');    

注:两个方法,第二个参数都可以传递数组。  

 

 ==========================================================================================

 

Datagrid动态设置列标题的的扩展方法

 在使用datagrid时候有时候需要动态的改变一下某一列的标题。但datagrid并没有提供这一方法,一下是一个扩展的方法可以供大家使用,希望对大家能有所帮助。 

扩展方法如下:

Js代码   收藏代码
  1. $.extend($.fn.datagrid.methods, {    
  2.     setColumnTitle: function(jq, option){    
  3.         if(option.field){  
  4.             return jq.each(function(){    
  5.                 var $panel = $(this).datagrid("getPanel");  
  6.                 var $field = $('td[field='+option.field+']',$panel);  
  7.                 if($field.length){  
  8.                     var $span = $("span",$field).eq(0);  
  9.                     $span.html(option.text);  
  10.                 }  
  11.             });  
  12.         }  
  13.         return jq;        
  14.     }    
  15. });  

 

调用方法如下:

Js代码   收藏代码
  1. $("#dt").datagrid("setColumnTitle",{field:'productid',text:'newTitle});    

 

 ==========================================================================================

其他:

Js代码   收藏代码
  1. $.extend($.messager.defaults,{  
  2.         ok:"确定",  
  3.         cancel:"取消"  
  4.     });  
  5.       
  6.       
  7.         
  8. EASYUI TAB:     
  9. var ctab = $('#xmlTab').tabs('getTab''Response XML').panel('options').tab;    
  10.     ctab.hide();//隐藏卡片   
  11.       
  12.       
  13. 解决思路:在进入行编辑状态后,获取combobox的编辑器并添加onChange事件,示例代码如下:      
  14. var amount = $('#tt').datagrid('getEditor', {index:editLineIndex,field:'amount'}).target;   // 个数      
  15. var sum = $('#tt').datagrid('getEditor', {index:editLineIndex,field:'sum'}).target; // 总数      
  16. amount.combobox({      
  17.     onChange:function(id){      
  18.         sum.val(id*100);    // 假设是text编辑类型      
  19.     }      
  20. });   

 

 baseui-all.min.js中方法使用:

其中方法如图:

Js代码   收藏代码
  1. var __YUIToolbarItems = {  
  2.     getQueryItem: function() {  
  3.         return {  
  4.             method: "do_query",  
  5.             iconCls: "queryAction ope-search",  
  6.             text: "查询",  
  7.             enable: true  
  8.         }  
  9.     },  
  10.     getAddItem: function() {  
  11.         return {  
  12.             method: "do_add",  
  13.             iconCls: "addAction ope-add",  
  14.             text: "新增",  
  15.             enable: true  
  16.         }  
  17.     },  
  18.     getDelItem: function() {  
  19.         return {  
  20.             method: "do_del",  
  21.             iconCls: "delAction ope-remove",  
  22.             text: "删除",  
  23.             enable: true  
  24.         }  
  25.     }  
  26.     ..  
  27. };  

 使用:

Js代码   收藏代码
  1. $obj.datagrid({           
  2.     url : _root+'/generic/query?__SERVICE_NAME=networkService',               
  3.     idField:'id',  
  4.     queryParams: {  
  5.         networkId: networkId  
  6.     },  
  7.     singleSelect:true,  
  8.     showToolbar:true,             
  9.     toolbar: [  
  10.           //正常方法  
  11.           {method:'do_add',iconCls: 'ope-add',text:'新增'},  
  12.           //公用快捷方法  
  13.           __YUIToolbarItems.getAddItem(),  
  14.           __YUIToolbarItems.getSaveItem() ,         
  15.           __YUIToolbarItems.getCancelItem()                 
  16.      ],   
  17. ..     

 方便抽出公用按钮。

 

========================================

jUtil.js:

Java代码   收藏代码
  1. /** 
  2.  * easyui扩展/常用的方法 
  3.  *  
  4.  * @author lk1312 
  5.  */  
  6. // 定义全局对象  
  7. var yxui = $.extend({}, yxui);  
  8.   
  9. $.parser.auto = false;  
  10. $(function() {  
  11.             $.messager.progress({  
  12.                         text : '数据加载中....',  
  13.                         interval : 100  
  14.                     });  
  15.             $.parser.parse(window.document);  
  16.             window.setTimeout(function() {  
  17.                         $.messager.progress('close');  
  18.                         if (self != parent) {  
  19.                             window.setTimeout(function() {  
  20.                                         try {  
  21.                                             parent.$.messager.progress('close');  
  22.                                         } catch (e) {  
  23.                                         }  
  24.                                     }, 500);  
  25.                         }  
  26.                     }, 1);  
  27.             $.parser.auto = true;  
  28.         });  
  29. $.fn.panel.defaults.loadingMessage = '数据加载中....';  
  30. $.fn.datagrid.defaults.loadMsg = '数据加载中....';  
  31. // 获得根路径 rootBasePath rootPath  
  32. yxui.rootBasePath = function() {  
  33.     var curWwwPath = window.document.location.href;  
  34.     var pathName = window.document.location.pathname;  
  35.     var pos = curWwwPath.indexOf(pathName);  
  36.     var localhostPaht = curWwwPath.substring(0, pos);  
  37.     var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1);  
  38.     return (localhostPaht + projectName);  
  39. };  
  40. yxui.rootPath = function() {  
  41.     var pathName = window.document.location.pathname;  
  42.     return pathName.substring(0, pathName.substr(1).indexOf('/') + 1);  
  43. };  
  44. // 格式化字符串 formatString  
  45. yxui.formatString = function(str) {  
  46.     for (var i = 0; i < arguments.length - 1; i++) {  
  47.         str = str.replace("{" + i + "}", arguments[i + 1]);  
  48.     }  
  49.     return str;  
  50. };  
  51. // 更换主题 changeTheme  
  52. yxui.changeTheme = function(themeName) {  
  53.     var $yxuiTheme = $('#yxuiTheme');  
  54.     var url = $yxuiTheme.attr('href');  
  55.     var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css';  
  56.     $yxuiTheme.attr('href', href);  
  57.     var $iframe = $('iframe');  
  58.     if ($iframe.length > 0) {  
  59.         for (var i = 0; i < $iframe.length; i++) {  
  60.             var ifr = $iframe[i];  
  61.             $(ifr).contents().find('#easyuiTheme').attr('href', href);  
  62.         }  
  63.     }  
  64.     $.cookie('yxuiTheme', themeName, {  
  65.                 expires : 7  
  66.             });  
  67. };  
  68. // 将form表单元素的值序列化成对象  
  69. yxui.serializeObject = function(form) {  
  70.     var o = {};  
  71.     $.each(form.serializeArray(), function(index) {  
  72.                 if (o[this['name']]) {  
  73.                     o[this['name']] = o[this['name']] + "," + this['value'];  
  74.                 } else {  
  75.                     o[this['name']] = this['value'];  
  76.                 }  
  77.             });  
  78.     return o;  
  79. };  
  80. // 操作权限控制 operId  
  81. yxui.operId = function(_this) {  
  82.     $("#_operId").val($(_this).attr("_operId"));  
  83.     $("#_resOperId").val($(_this).attr("_resOperId"));  
  84.     $("#_resOperKey").val($(_this).attr("_resOperKey"));  
  85.     // console.info("set->" + $("#_operId").val());  
  86. };  
  87. // form提交 formSubmit  
  88. yxui.formSubmit = function(_datagrid, _dialog, _form, _url, _callbak) {  
  89.     var _arg = '_menuId=' + $("#_menuId").val() + '&_operId=' + $("#_operId").val() + '&_resOperId=' + $("#_resOperId").val() + '&_resOperKey=' + $("#_resOperKey").val();  
  90.     _url = yxui.refreshUrlLink(_url, _arg);  
  91.     if (_form.form('validate')) {  
  92.         _form.form('submit', {  
  93.                     url : _url,  
  94.                     success : function(data) {  
  95.                         _callbak(data, _datagrid, _dialog, _form, _url);  
  96.                     }  
  97.                 })  
  98.     }  
  99.     $("#_operId").val('');  
  100. };  
  101. // ajax提交 ajaxSubmit  
  102. yxui.ajaxSubmit = function(_datagrid, _dialog, _form, _url, _data, _callbak) {  
  103.     // console.info("ajax get->" + $("#_operId").val());  
  104.     _data._operId = $("#_operId").val();  
  105.     _data._resOperId = $("#_resOperId").val();  
  106.     _data._resOperKey = $("#_resOperKey").val();  
  107.     $.ajax({  
  108.                 url : _url,  
  109.                 type : 'post',  
  110.                 data : _data,  
  111.                 dataType : 'json',  
  112.                 cache : false,  
  113.                 success : function(response) {  
  114.                     _callbak(response, _datagrid, _dialog, _form, _url, _data);  
  115.                 }  
  116.             });  
  117. };  
  118. // refreshUrlLink  
  119. yxui.refreshUrlLink = function(_url, _arg) {  
  120.     var index = _url.indexOf('?');  
  121.     var length = _url.length;  
  122.     if (index < 0) {  
  123.         _url = _url + '?' + _arg;  
  124.     } else if (index == length - 1) {  
  125.         _url = _url + _arg;  
  126.     } else {  
  127.         _url = _url.substring(0, index + 1) + _arg + '&' + _url.substring(index + 1, length);  
  128.     }  
  129.     return _url;  
  130. };  
  131. // dotoHtml  
  132. yxui.dotoHtml = function(tos) {  
  133.     var returnHtml = $('#rowOperation').html();  
  134.     if (null != returnHtml) {  
  135.         var maxArgsNumb = $('#_maxArgsNumb').val();  
  136.         if (maxArgsNumb == 0) {  
  137.             return returnHtml;  
  138.         } else {  
  139.             for (var i = 0; i < maxArgsNumb; i++) {  
  140.                 returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'""g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]);  
  141.             }  
  142.             return returnHtml;  
  143.         }  
  144.     } else {  
  145.         return "";  
  146.     }  
  147. }  
  148. // dotoHtmlById  
  149. yxui.dotoHtmlById = function(id, tos) {  
  150.     var returnHtml = $('#' + id).html();  
  151.     if (null != returnHtml) {  
  152.         var maxArgsNumb = tos.length;  
  153.         for (var i = 0; i < maxArgsNumb; i++) {  
  154.             returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'""g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]);  
  155.         }  
  156.         return returnHtml;  
  157.     } else {  
  158.         return "";  
  159.     }  
  160. }  
  161. // dotoDiyHtml  
  162. yxui.dotoDiyHtml = function(returnHtml, tos, maxArgsNumb) {  
  163.     if (null != returnHtml) {  
  164.         if (null == maxArgsNumb || maxArgsNumb == 0) {  
  165.             return returnHtml;  
  166.         } else {  
  167.             for (var i = 0; i < maxArgsNumb; i++) {  
  168.                 returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'""g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]);  
  169.             }  
  170.             return returnHtml;  
  171.         }  
  172.     } else {  
  173.         return "";  
  174.     }  
  175. }  
  176. // replaceAll  
  177. yxui.replaceAll = function(_str, _from, _to) {  
  178.     if (null != _str) {  
  179.         return _str.replace(new RegExp(_from, "g"), _to);  
  180.     } else {  
  181.         return "";  
  182.     }  
  183. }  
  184. // getRequestArg  
  185. yxui.getRequestArg = function() {  
  186.     var _url = location.search;  
  187.     var returnObject = {};  
  188.     var index = _url.indexOf("?");  
  189.     if (index != -1) {  
  190.         var str = _url.substr(index + 1);  
  191.         strs = str.split("&");  
  192.         for (var i = 0; i < strs.length; i++) {  
  193.             returnObject[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);  
  194.         }  
  195.     }  
  196.     return returnObject;  
  197. }  
  198. // xui.getUrlArg  
  199. yxui.getUrlArg = function(_url) {  
  200.     var index = _url.indexOf("?");  
  201.     if (index != -1) {  
  202.         var returnObject = {};  
  203.         var str = _url.substr(index + 1);  
  204.         strs = str.split("&");  
  205.         for (var i = 0; i < strs.length; i++) {  
  206.             returnObject[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);  
  207.         }  
  208.         return returnObject;  
  209.     }  
  210.     return null;  
  211. }  
  212. function getrequest() {  
  213.     var url = location.search; // 获取url中"?"符后的字串  
  214.     // alert(url.indexOf("?"))  
  215.     var therequest = {};  
  216.     if (url.indexOf("?") != -1) {  
  217.         var str = url.substr(1);  
  218.         // alert(str)  
  219.         strs = str.split("&");  
  220.         for (var i = 0; i < strs.length; i++) {  
  221.             therequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);  
  222.         }  
  223.     }  
  224.     return therequest;  
  225. }  
  226. /** 
  227.  * 扩展treegrid diyload treegrid查询功能 
  228.  */  
  229. $.extend($.fn.treegrid.methods, {  
  230.             diyload : function(jq, param) {  
  231.                 return jq.each(function() {  
  232.                             var opts = $(this).treegrid("options");  
  233.                             diyRequest(this, param);  
  234.                         });  
  235.             }  
  236.         });  
  237. function diyRequest(jq, param) {  
  238.     var opts = $.data(jq, "treegrid").options;  
  239.     if (param) {  
  240.         opts.queryParams = param;  
  241.     }  
  242.     if (!opts.url) {  
  243.         return;  
  244.     }  
  245.     var param = $.extend({}, opts.queryParams);  
  246.     if (opts.onBeforeLoad.call(jq, param) == false) {  
  247.         return;  
  248.     }  
  249.     setTimeout(function() {  
  250.                 doRequest();  
  251.             }, 0);  
  252.     function doRequest() {  
  253.         $.ajax({  
  254.                     type : opts.method,  
  255.                     url : opts.url,  
  256.                     data : param,  
  257.                     dataType : "json",  
  258.                     success : function(data) {  
  259.                         $(jq).treegrid('loadData', data)  
  260.                     },  
  261.                     error : function() {  
  262.                         if (opts.onLoadError) {  
  263.                             opts.onLoadError.apply(jq, arguments);  
  264.                         }  
  265.                     }  
  266.                 });  
  267.     }  
  268. }  
  269. /** 
  270.  * 扩展tree getCheckedExt 获得选中节点+实心节点 getSolidExt 获取实心节点 
  271.  */  
  272. $.extend($.fn.tree.methods, {  
  273.             getCheckedExt : function(jq) {  
  274.                 var checked = [];  
  275.                 var checkbox2 = $(jq).find("span.tree-checkbox1,span.tree-checkbox2").parent();  
  276.                 $.each(checkbox2, function() {  
  277.                             var thisData = {  
  278.                                 target : this,  
  279.                                 "checked" : true  
  280.                             };  
  281.                             var node = $.extend({}, $.data(this"tree-node"), thisData);  
  282.                             checked.push(node);  
  283.                         });  
  284.                 return checked;  
  285.             },  
  286.             getSolidExt : function(jq) {  
  287.                 var checked = [];  
  288.                 var checkbox2 = $(jq).find("span.tree-checkbox2").parent();  
  289.                 $.each(checkbox2, function() {  
  290.                             var node = $.extend({}, $.data(this"tree-node"), {  
  291.                                         target : this  
  292.                                     });  
  293.                             checked.push(node);  
  294.                         });  
  295.                 return checked;  
  296.             }  
  297.         });  
  298. /** 
  299.  * 扩展datagrid,添加动态增加或删除Editor的方法 
  300.  */  
  301. $.extend($.fn.datagrid.methods, {  
  302.             addEditor : function(jq, param) {  
  303.                 if (param instanceof Array) {  
  304.                     $.each(param, function(index, item) {  
  305.                                 var e = $(jq).datagrid('getColumnOption', item.field);  
  306.                                 e.editor = item.editor;  
  307.                             });  
  308.                 } else {  
  309.                     var e = $(jq).datagrid('getColumnOption', param.field);  
  310.                     e.editor = param.editor;  
  311.                 }  
  312.             },  
  313.             removeEditor : function(jq, param) {  
  314.                 if (param instanceof Array) {  
  315.                     $.each(param, function(index, item) {  
  316.                                 var e = $(jq).datagrid('getColumnOption', item);  
  317.                                 e.editor = {};  
  318.                             });  
  319.                 } else {  
  320.                     var e = $(jq).datagrid('getColumnOption', param);  
  321.                     e.editor = {};  
  322.                 }  
  323.             }  
  324.         });  
  325. /** 
  326.  * 扩展datagrid editor 增加带复选框的下拉树/增加日期时间组件/增加多选combobox组件 
  327.  */  
  328. $.extend($.fn.datagrid.defaults.editors, {  
  329.             combocheckboxtree : {  
  330.                 init : function(container, options) {  
  331.                     var editor = $('').appendTo(container);  
  332.                     options.multiple = true;  
  333.                     editor.combotree(options);  
  334.                     return editor;  
  335.                 },  
  336.                 destroy : function(target) {  
  337.                     $(target).combotree('destroy');  
  338.                 },  
  339.                 getValue : function(target) {  
  340.                     return $(target).combotree('getValues').join(',');  
  341.                 },  
  342.                 setValue : function(target, value) {  
  343.                     $(target).combotree('setValues', sy.getList(value));  
  344.                 },  
  345.                 resize : function(target, width) {  
  346.                     $(target).combotree('resize', width);  
  347.                 }  
  348.             },  
  349.             datetimebox : {  
  350.                 init : function(container, options) {  
  351.                     var editor = $('').appendTo(container);  
  352.                     editor.datetimebox(options);  
  353.                     return editor;  
  354.                 },  
  355.                 destroy : function(target) {  
  356.                     $(target).datetimebox('destroy');  
  357.                 },  
  358.                 getValue : function(target) {  
  359.                     return $(target).datetimebox('getValue');  
  360.                 },  
  361.                 setValue : function(target, value) {  
  362.                     $(target).datetimebox('setValue', value);  
  363.                 },  
  364.                 resize : function(target, width) {  
  365.                     $(target).datetimebox('resize', width);  
  366.                 }  
  367.             },  
  368.             multiplecombobox : {  
  369.                 init : function(container, options) {  
  370.                     var editor = $('').appendTo(container);  
  371.                     options.multiple = true;  
  372.                     editor.combobox(options);  
  373.                     return editor;  
  374.                 },  
  375.                 destroy : function(target) {  
  376.                     $(target).combobox('destroy');  
  377.                 },  
  378.                 getValue : function(target) {  
  379.                     return $(target).combobox('getValues').join(',');  
  380.                 },  
  381.                 setValue : function(target, value) {  
  382.                     $(target).combobox('setValues', sy.getList(value));  
  383.                 },  
  384.                 resize : function(target, width) {  
  385.                     $(target).combobox('resize', width);  
  386.                 }  
  387.             }  
  388.         });  
  389. /** 
  390.  * 扩展 datagrid/treegrid 增加表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中 
  391.  *  
  392.  * @param e 
  393.  * @param field 
  394.  */  
  395. var createGridHeaderContextMenu = function(e, field) {  
  396.     e.preventDefault();  
  397.     var grid = $(this);/* grid本身 */  
  398.     var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */  
  399.     if (!headerContextMenu) {  
  400.         var tmenu = $('
').appendTo('body');  
  •         var fields = grid.datagrid('getColumnFields');  
  •         for (var i = 0; i < fields.length; i++) {  
  •             var fildOption = grid.datagrid('getColumnOption', fields[i]);  
  •             if (!fildOption.hidden) {  
  •                 $(' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);  
  •             } else {  
  •                 $(' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu);  
  •             }  
  •         }  
  •         headerContextMenu = this.headerContextMenu = tmenu.menu({  
  •                     onClick : function(item) {  
  •                         var field = $(item.target).attr('field');  
  •                         if (item.iconCls == 'icon-ok') {  
  •                             grid.datagrid('hideColumn', field);  
  •                             $(this).menu('setIcon', {  
  •                                         target : item.target,  
  •                                         iconCls : 'icon-empty'  
  •                                     });  
  •                         } else {  
  •                             grid.datagrid('showColumn', field);  
  •                             $(this).menu('setIcon', {  
  •                                         target : item.target,  
  •                                         iconCls : 'icon-ok'  
  •                                     });  
  •                         }  
  •                     }  
  •                 });  
  •     }  
  •     headerContextMenu.menu('show', {  
  •                 left : e.pageX,  
  •                 top : e.pageY  
  •             });  
  • };  
  • $.fn.datagrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;  
  • $.fn.treegrid.defaults.onHeaderContextMenu = createGridHeaderContextMenu;  
  • /** 
  •  * 扩展 用于datagrid/treegrid/tree/combogrid/combobox/form加载数据出错时的操作 
  •  *  
  •  * @param XMLHttpRequest 
  •  */  
  • var easyuiErrorFunction = function(XMLHttpRequest) {  
  •     $.messager.progress('close');  
  •     $.messager.alert('错误', XMLHttpRequest.responseText);  
  • };  
  • $.fn.datagrid.defaults.onLoadError = easyuiErrorFunction;  
  • $.fn.treegrid.defaults.onLoadError = easyuiErrorFunction;  
  • $.fn.tree.defaults.onLoadError = easyuiErrorFunction;  
  • $.fn.combogrid.defaults.onLoadError = easyuiErrorFunction;  
  • $.fn.combobox.defaults.onLoadError = easyuiErrorFunction;  
  • $.fn.form.defaults.onLoadError = easyuiErrorFunction;  
  • /** 
  •  * 防止panel/window/dialog组件超出浏览器边界 
  •  *  
  •  * @param left 
  •  * @param top 
  •  */  
  • var easyuiPanelOnMove = function(left, top) {  
  •     var l = left;  
  •     var t = top;  
  •     if (l < 1) {  
  •         l = 1;  
  •     }  
  •     if (t < 1) {  
  •         t = 1;  
  •     }  
  •     var width = parseInt($(this).parent().css('width')) + 14;  
  •     var height = parseInt($(this).parent().css('height')) + 14;  
  •     var right = l + width;  
  •     var buttom = t + height;  
  •     var browserWidth = $(window).width();  
  •     var browserHeight = $(window).height();  
  •     if (right > browserWidth) {  
  •         l = browserWidth - width;  
  •     }  
  •     if (buttom > browserHeight) {  
  •         t = browserHeight - height;  
  •     }  
  •     $(this).parent().css({/* 修正面板位置 */  
  •         left : l,  
  •         top : t  
  •     });  
  • };  
  • $.fn.dialog.defaults.onMove = easyuiPanelOnMove;  
  • $.fn.window.defaults.onMove = easyuiPanelOnMove;  
  • $.fn.panel.defaults.onMove = easyuiPanelOnMove;  
  • /** 
  •  * 扩展easyui的validator插件rules,支持更多类型验证 
  •  */  
  • $.extend($.fn.validatebox.defaults.rules, {  
  •             minLength : { // 判断最小长度  
  •                 validator : function(value, param) {  
  •                     return value.length >= param[0];  
  •                 },  
  •                 message : '最少输入 {0} 个字符'  
  •             },  
  •             length : { // 长度  
  •                 validator : function(value, param) {  
  •                     var len = $.trim(value).length;  
  •                     return len >= param[0] && len <= param[1];  
  •                 },  
  •                 message : "输入内容长度必须介于{0}和{1}之间"  
  •             },  
  •             phone : {// 验证电话号码  
  •                 validator : function(value) {  
  •                     return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);  
  •                 },  
  •                 message : '格式不正确,请使用下面格式:020-88888888'  
  •             },  
  •             mobile : {// 验证手机号码  
  •                 validator : function(value) {  
  •                     return /^(13|15|18)\d{9}$/i.test(value);  
  •                 },  
  •                 message : '手机号码格式不正确'  
  •             },  
  •             phoneAndMobile : {// 电话号码或手机号码  
  •                 validator : function(value) {  
  •                     return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value) || /^(13|15|18)\d{9}$/i.test(value);  
  •                 },  
  •                 message : '电话号码或手机号码格式不正确'  
  •             },  
  •             idcard : {// 验证身份证  
  •                 validator : function(value) {  
  •                     return /^\d{15}(\d{2}[A-Za-z0-9])?$/i.test(value) || /^\d{18}(\d{2}[A-Za-z0-9])?$/i.test(value);  
  •                 },  
  •                 message : '身份证号码格式不正确'  
  •             },  
  •             intOrFloat : {// 验证整数或小数  
  •                 validator : function(value) {  
  •                     return /^\d+(\.\d+)?$/i.test(value);  
  •                 },  
  •                 message : '请输入数字,并确保格式正确'  
  •             },  
  •             currency : {// 验证货币  
  •                 validator : function(value) {  
  •                     return /^\d+(\.\d+)?$/i.test(value);  
  •                 },  
  •                 message : '货币格式不正确'  
  •             },  
  •             qq : {// 验证QQ,从10000开始  
  •                 validator : function(value) {  
  •                     return /^[1-9]\d{4,9}$/i.test(value);  
  •                 },  
  •                 message : 'QQ号码格式不正确'  
  •             },  
  •             integer : {// 验证整数  
  •                 validator : function(value) {  
  •                     return /^[+]?[1-9]+\d*$/i.test(value);  
  •                 },  
  •                 message : '请输入整数'  
  •             },  
  •             chinese : {// 验证中文  
  •                 validator : function(value) {  
  •                     return /^[\u0391-\uFFE5]+$/i.test(value);  
  •                 },  
  •                 message : '请输入中文'  
  •             },  
  •             chineseAndLength : {// 验证中文及长度  
  •                 validator : function(value) {  
  •                     var len = $.trim(value).length;  
  •                     if (len >= param[0] && len <= param[1]) {  
  •                         return /^[\u0391-\uFFE5]+$/i.test(value);  
  •                     }  
  •                 },  
  •                 message : '请输入中文'  
  •             },  
  •             english : {// 验证英语  
  •                 validator : function(value) {  
  •                     return /^[A-Za-z]+$/i.test(value);  
  •                 },  
  •                 message : '请输入英文'  
  •             },  
  •             englishAndLength : {// 验证英语及长度  
  •                 validator : function(value, param) {  
  •                     var len = $.trim(value).length;  
  •                     if (len >= param[0] && len <= param[1]) {  
  •                         return /^[A-Za-z]+$/i.test(value);  
  •                     }  
  •                 },  
  •                 message : '请输入英文'  
  •             },  
  •             englishUpperCase : {// 验证英语大写  
  •                 validator : function(value) {  
  •                     return /^[A-Z]+$/.test(value);  
  •                 },  
  •                 message : '请输入大写英文'  
  •             },  
  •             unnormal : {// 验证是否包含空格和非法字符  
  •                 validator : function(value) {  
  •                     return /.+/i.test(value);  
  •                 },  
  •                 message : '输入值不能为空和包含其他非法字符'  
  •             },  
  •             username : {// 验证用户名  
  •                 validator : function(value) {  
  •                     return /^[a-zA-Z][a-zA-Z0-9_]{5,15}$/i.test(value);  
  •                 },  
  •                 message : '用户名不合法(字母开头,允许6-16字节,允许字母数字下划线)'  
  •             },  
  •             faxno : {// 验证传真  
  •                 validator : function(value) {  
  •                     return /^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$/i.test(value);  
  •                 },  
  •                 message : '传真号码不正确'  
  •             },  
  •             zip : {// 验证邮政编码  
  •                 validator : function(value) {  
  •                     return /^[1-9]\d{5}$/i.test(value);  
  •                 },  
  •                 message : '邮政编码格式不正确'  
  •             },  
  •             ip : {// 验证IP地址  
  •                 validator : function(value) {  
  •                     return /d+.d+.d+.d+/i.test(value);  
  •                 },  
  •                 message : 'IP地址格式不正确'  
  •             },  
  •             name : {// 验证姓名,可以是中文或英文  
  •                 validator : function(value) {  
  •                     return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value);  
  •                 },  
  •                 message : '请输入姓名'  
  •             },  
  •             engOrChinese : {// 可以是中文或英文  
  •                 validator : function(value) {  
  •                     return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value);  
  •                 },  
  •                 message : '请输入中文'  
  •             },  
  •             engOrChineseAndLength : {// 可以是中文或英文  
  •                 validator : function(value) {  
  •                     var len = $.trim(value).length;  
  •                     if (len >= param[0] && len <= param[1]) {  
  •                         return /^[\u0391-\uFFE5]+$/i.test(value) | /^\w+[\w\s]+\w+$/i.test(value);  
  •                     }  
  •                 },  
  •                 message : '请输入中文或英文'  
  •             },  
  •             carNo : {  
  •                 validator : function(value) {  
  •                     return /^[\u4E00-\u9FA5][\da-zA-Z]{6}$/.test(value);  
  •                 },  
  •                 message : '车牌号码无效(例:粤B12350)'  
  •             },  
  •             carenergin : {  
  •                 validator : function(value) {  
  •                     return /^[a-zA-Z0-9]{16}$/.test(value);  
  •                 },  
  •                 message : '发动机型号无效(例:FG6H012345654584)'  
  •             },  
  •             same : {  
  •                 validator : function(value, param) {  
  •                     if ($("#" + param[0]).val() != "" && value != "") {  
  •                         return $("#" + param[0]).val() == value;  
  •                     } else {  
  •                         return true;  
  •                     }  
  •                 },  
  •                 message : '两次输入的密码不一致!'  
  •             }  
  •         });  
  • /** 
  •  * 扩展easyui validatebox的两个方法.移除验证和还原验证 
  •  */  
  • $.extend($.fn.validatebox.methods, {  
  •             remove : function(jq, newposition) {  
  •                 return jq.each(function() {  
  •                     $(this).removeClass("validatebox-text validatebox-invalid").unbind('focus.validatebox').unbind('blur.validatebox');  
  •                         // remove tip  
  •                         // $(this).validatebox('hideTip', this);  
  •                     });  
  •             },  
  •             reduce : function(jq, newposition) {  
  •                 return jq.each(function() {  
  •                     var opt = $(this).data().validatebox.options;  
  •                     $(this).addClass("validatebox-text").validatebox(opt);  
  •                         // $(this).validatebox('validateTip', this);  
  •                     });  
  •             },  
  •             validateTip : function(jq) {  
  •                 jq = jq[0];  
  •                 var opts = $.data(jq, "validatebox").options;  
  •                 var tip = $.data(jq, "validatebox").tip;  
  •                 var box = $(jq);  
  •                 var value = box.val();  
  •                 function setTipMessage(msg) {  
  •                     $.data(jq, "validatebox").message = msg;  
  •                 };  
  •                 var disabled = box.attr("disabled");  
  •                 if (disabled == true || disabled == "true") {  
  •                     return true;  
  •                 }  
  •                 if (opts.required) {  
  •                     if (value == "") {  
  •                         box.addClass("validatebox-invalid");  
  •                         setTipMessage(opts.missingMessage);  
  •                         $(jq).validatebox('showTip', jq);  
  •                         return false;  
  •                     }  
  •                 }  
  •                 if (opts.validType) {  
  •                     var result = /([a-zA-Z_]+)(.*)/.exec(opts.validType);  
  •                     var rule = opts.rules[result[1]];  
  •                     if (value && rule) {  
  •                         var param = eval(result[2]);  
  •                         if (!rule["validator"](value, param)) {  
  •                             box.addClass("validatebox-invalid");  
  •                             var message = rule["message"];  
  •                             if (param) {  
  •                                 for (var i = 0; i < param.length; i++) {  
  •                                     message = message.replace(new RegExp("\\{" + i + "\\}""g"), param[i]);  
  •                                 }  
  •                             }  
  •                             setTipMessage(opts.invalidMessage || message);  
  •                             $(jq).validatebox('showTip', jq);  
  •                             return false;  
  •                         }  
  •                     }  
  •                 }  
  •                 box.removeClass("validatebox-invalid");  
  •                 $(jq).validatebox('hideTip', jq);  
  •                 return true;  
  •             },  
  •             showTip : function(jq) {  
  •                 jq = jq[0];  
  •                 var box = $(jq);  
  •                 var msg = $.data(jq, "validatebox").message  
  •                 var tip = $.data(jq, "validatebox").tip;  
  •                 if (!tip) {  
  •                     tip = $("" + "" + "" + "" + "" + "
  • ").appendTo("body");  
  •                     $.data(jq, "validatebox").tip = tip;  
  •                 }  
  •                 tip.find(".validatebox-tip-content").html(msg);  
  •                 tip.css({  
  •                             display : "block",  
  •                             left : box.offset().left + box.outerWidth(),  
  •                             top : box.offset().top  
  •                         });  
  •             },  
  •             hideTip : function(jq) {  
  •                 jq = jq[0];  
  •                 var tip = $.data(jq, "validatebox").tip;  
  •                 if (tip) {  
  •                     tip.remove;  
  •                     $.data(jq, "validatebox").tip = null;  
  •                 }  
  •             }  
  •         });  
  • /** 
  •  * 对easyui dialog 封装 
  •  */  
  • yxui.dialog = function(options) {  
  •     var opts = $.extend({  
  •                 modal : true,  
  •                 onClose : function() {  
  •                     $(this).dialog('destroy');  
  •                 }  
  •             }, options);  
  •     return $('
    ').dialog(opts);  
  • };  
  •   
  • /** 
  •  * 相同连续列合并扩展 
  •  */  
  • $.extend($.fn.datagrid.methods, {  
  •             autoMergeCells : function(jq, fields) {  
  •                 return jq.each(function() {  
  •                             var target = $(this);  
  •                             if (!fields) {  
  •                                 fields = target.datagrid("getColumnFields");  
  •                             }  
  •                             var rows = target.datagrid("getRows");  
  •                             var i = 0, j = 0, temp = {};  
  •                             for (i; i < rows.length; i++) {  
  •                                 var row = rows[i];  
  •                                 j = 0;  
  •                                 for (j; j < fields.length; j++) {  
  •                                     var field = fields[j];  
  •                                     var tf = temp[field];  
  •                                     if (!tf) {  
  •                                         tf = temp[field] = {};  
  •                                         tf[row[field]] = [i];  
  •                                     } else {  
  •                                         var tfv = tf[row[field]];  
  •                                         if (tfv) {  
  •                                             tfv.push(i);  
  •                                         } else {  
  •                                             tfv = tf[row[field]] = [i];  
  •                                         }  
  •                                     }  
  •                                 }  
  •                             }  
  •                             $.each(temp, function(field, colunm) {  
  •                                         $.each(colunm, function() {  
  •                                                     var group = this;  
  •                                                     if (group.length > 1) {  
  •                                                         var before, after, megerIndex = group[0];  
  •                                                         for (var i = 0; i < group.length; i++) {  
  •                                                             before = group[i];  
  •                                                             after = group[i + 1];  
  •                                                             if (after && (after - before) == 1) {  
  •                                                                 continue;  
  •                                                             }  
  •                                                             var rowspan = before - megerIndex + 1;  
  •                                                             if (rowspan > 1) {  
  •                                                                 target.datagrid('mergeCells', {  
  •                                                                             index : megerIndex,  
  •                                                                             field : field,  
  •                                                                             rowspan : rowspan  
  •                                                                         });  
  •                                                             }  
  •                                                             if (after && (after - before) != 1) {  
  •                                                                 megerIndex = after;  
  •                                                             }  
  •                                                         }  
  •                                                     }  
  •                                                 });  
  •                                     });  
  •                         });  
  •             }  
  •         });  
  • /** 
  •  * 左到右 
  •  */  
  • yxui.left2right = function(but) {  
  •     var $layout = $($(but).parents('.easyui-layout')[0]);  
  •     var left = $layout.find('select')[0];  
  •     var rigth = $layout.find('select')[1];  
  •     if ($.browser.msie) {// IE 单独处理  
  •         for (var i = 0; i < left.options.length; i++) {  
  •             var option = left.options[i];  
  •             if (option.selected) {  
  •                 var opt = new Option(option.text, option.value);  
  •                 rigth.options.add(opt);  
  •                 left.remove(i);  
  •             }  
  •         }  
  •     } else {  
  •         $(left.options).each(function(i, n) {  
  •                     if (n.selected) {  
  •                         n.selected = false;  
  •                         rigth.options.add(n);  
  •                     }  
  •                 });  
  •     }  
  • };  
  • /** 
  •  * 右到左 
  •  */  
  • yxui.right2left = function(but) {  
  •     var $layout = $($(but).parents('.easyui-layout')[0]);  
  •     var left = $layout.find('select')[0];  
  •     var rigth = $layout.find('select')[1];  
  •     if ($.browser.msie) {// IE 单独处理  
  •         for (var i = 0; i < rigth.options.length; i++) {  
  •             var option = rigth.options[i];  
  •             if (option.selected) {  
  •                 var opt = new Option(option.text, option.value);  
  •                 left.options.add(opt);  
  •                 rigth.remove(i);  
  •             }  
  •         }  
  •     } else {  
  •         $(rigth.options).each(function(i, n) {  
  •                     if (n.selected) {  
  •                         n.selected = false;  
  •                         left.options.add(n);  
  •                     }  
  •                 });  
  •     }  
  • }  
  • /** 
  •  * 左全到右 
  •  */  
  • yxui.leftall2right = function(but) {  
  •     var $layout = $($(but).parents('.easyui-layout')[0]);  
  •     var left = $layout.find('select')[0];  
  •     var rigth = $layout.find('select')[1];  
  •     if ($.browser.msie) {// IE 单独处理  
  •         for (var i = 0; i < left.options.length; i++) {  
  •             var option = left.options[i];  
  •             var opt = new Option(option.text, option.value);  
  •             rigth.options.add(opt);  
  •         }  
  •         $(left).empty();  
  •     } else {  
  •         $(left.options).each(function(i, n) {  
  •                     rigth.options.add(n);  
  •                 });  
  •     }  
  • };  
  • /** 
  •  * 右全到左 
  •  */  
  • yxui.rightall2left = function(but) {  
  •     var $layout = $($(but).parents('.easyui-layout')[0]);  
  •     var left = $layout.find('select')[0];  
  •     var rigth = $layout.find('select')[1];  
  •     if ($.browser.msie) {// IE 单独处理  
  •         for (var i = 0; i < rigth.options.length; i++) {  
  •             var option = rigth.options[i];  
  •             var opt = new Option(option.text, option.value);  
  •             left.options.add(opt);  
  •         }  
  •         $(rigth).empty();  
  •     } else {  
  •         $(rigth.options).each(function(i, n) {  
  •                     left.options.add(n);  
  •                 });  
  •     }  
  • };  
  • /** 
  •  * select 选择框数据采集 
  •  *  
  •  * @param options 
  •  * @return 数组 
  •  */  
  • yxui.findSelectMultipleValue = function(options) {  
  •     var returnArr = [], ids = [], texts = [];  
  •     if ($.browser.msie) {// IE 单独处理  
  •         for (var i = 0; i < options.length; i++) {  
  •             ids.push(options[i].value);  
  •             texts.push(options[i].text);  
  •         }  
  •     } else {  
  •         $(options).each(function(i, n) {  
  •                     ids.push($(n).val());  
  •                     texts.push($(n).html());  
  •                 });  
  •     }  
  •     returnArr.push(ids);  
  •     returnArr.push(texts);  
  •     return returnArr;  
  • }  
  •  

    EASYUI API扩展(重要) 

    API扩展项目源码下载

    ....

    • YX扩展JS.rar (251.5 KB)

    你可能感兴趣的:(前台框架)