EasyUI扩展方法:
1、我想指定textarea的行,但editor:{type:'textarea', options: {rows:'4'}}这样写不行。请问大家怎么配置才是指定行的啊?
配置Textarea不可拖动变大变小:
只能自己扩展 textarea 才能实现,配置不用修改,直接扩展就行
jQuery.extend(jQuery.fn.datagrid.defaults.editors, { combotree: { init: function(container, options){ var editor = jQuery('<input type="text">').appendTo(container); editor.combotree(options); return editor; }, destroy: function(target){ jQuery(target).combotree('destroy'); }, getValue: function(target){ var temp = jQuery(target).combotree('getValues'); //alert(temp); return temp.join(','); }, setValue: function(target, value){ var temp = value.split(','); //alert(temp); jQuery(target).combotree('setValues', temp); }, resize: function(target, width){ jQuery(target).combotree('resize', width); } }, textarea: { init : function(container, options) { var input = $( '<textarea class="datagrid-editable-input" style="resize:none;"></textarea>') .appendTo(container); return input; }, getValue : function(target) { return $(target).val(); }, setValue : function(target, value) { $(target).val(value); }, resize : function(target, width) { var input = $(target); if ($.boxModel == true) { input.width(width - (input.outerWidth() - input.width())); } else { input.width(width); } } } });
==========================================================================================
扩展jQuery easyui datagrid增加动态改变列编辑的类型
$.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item.field); e.editor = item.editor; }); } else { var e = $(jq).datagrid('getColumnOption', param.field); e.editor = param.editor; } }, removeEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item); e.editor = {}; }); } else { var e = $(jq).datagrid('getColumnOption', param); e.editor = {}; } } });
使用方式:
为password字段添加一个editor
$("#gridId").datagrid('addEditor', { field : 'password', editor : { type : 'validatebox', options : { required : true } } });
删除password的editor
$("#gridid").datagrid('removeEditor', 'password');
注:两个方法,第二个参数都可以传递数组。
==========================================================================================
Datagrid动态设置列标题的的扩展方法
在使用datagrid时候有时候需要动态的改变一下某一列的标题。但datagrid并没有提供这一方法,一下是一个扩展的方法可以供大家使用,希望对大家能有所帮助。
扩展方法如下:
$.extend($.fn.datagrid.methods, { setColumnTitle: function(jq, option){ if(option.field){ return jq.each(function(){ var $panel = $(this).datagrid("getPanel"); var $field = $('td[field='+option.field+']',$panel); if($field.length){ var $span = $("span",$field).eq(0); $span.html(option.text); } }); } return jq; } });
调用方法如下:
$("#dt").datagrid("setColumnTitle",{field:'productid',text:'newTitle});
==========================================================================================
其他:
$.extend($.messager.defaults,{ ok:"确定", cancel:"取消" }); EASYUI TAB: var ctab = $('#xmlTab').tabs('getTab', 'Response XML').panel('options').tab; ctab.hide();//隐藏卡片 解决思路:在进入行编辑状态后,获取combobox的编辑器并添加onChange事件,示例代码如下: var amount = $('#tt').datagrid('getEditor', {index:editLineIndex,field:'amount'}).target; // 个数 var sum = $('#tt').datagrid('getEditor', {index:editLineIndex,field:'sum'}).target; // 总数 amount.combobox({ onChange:function(id){ sum.val(id*100); // 假设是text编辑类型 } });
baseui-all.min.js中方法使用:
其中方法如图:
var __YUIToolbarItems = { getQueryItem: function() { return { method: "do_query", iconCls: "queryAction ope-search", text: "查询", enable: true } }, getAddItem: function() { return { method: "do_add", iconCls: "addAction ope-add", text: "新增", enable: true } }, getDelItem: function() { return { method: "do_del", iconCls: "delAction ope-remove", text: "删除", enable: true } } .. };
使用:
$obj.datagrid({ url : _root+'/generic/query?__SERVICE_NAME=networkService', idField:'id', queryParams: { networkId: networkId }, singleSelect:true, showToolbar:true, toolbar: [ //正常方法 {method:'do_add',iconCls: 'ope-add',text:'新增'}, //公用快捷方法 __YUIToolbarItems.getAddItem(), __YUIToolbarItems.getSaveItem() , __YUIToolbarItems.getCancelItem() ], ..
方便抽出公用按钮。
========================================
jUtil.js:
/** * easyui扩展/常用的方法 * * @author lk1312 */ // 定义全局对象 var yxui = $.extend({}, yxui); $.parser.auto = false; $(function() { $.messager.progress({ text : '数据加载中....', interval : 100 }); $.parser.parse(window.document); window.setTimeout(function() { $.messager.progress('close'); if (self != parent) { window.setTimeout(function() { try { parent.$.messager.progress('close'); } catch (e) { } }, 500); } }, 1); $.parser.auto = true; }); $.fn.panel.defaults.loadingMessage = '数据加载中....'; $.fn.datagrid.defaults.loadMsg = '数据加载中....'; // 获得根路径 rootBasePath rootPath yxui.rootBasePath = function() { var curWwwPath = window.document.location.href; var pathName = window.document.location.pathname; var pos = curWwwPath.indexOf(pathName); var localhostPaht = curWwwPath.substring(0, pos); var projectName = pathName.substring(0, pathName.substr(1).indexOf('/') + 1); return (localhostPaht + projectName); }; yxui.rootPath = function() { var pathName = window.document.location.pathname; return pathName.substring(0, pathName.substr(1).indexOf('/') + 1); }; // 格式化字符串 formatString yxui.formatString = function(str) { for (var i = 0; i < arguments.length - 1; i++) { str = str.replace("{" + i + "}", arguments[i + 1]); } return str; }; // 更换主题 changeTheme yxui.changeTheme = function(themeName) { var $yxuiTheme = $('#yxuiTheme'); var url = $yxuiTheme.attr('href'); var href = url.substring(0, url.indexOf('themes')) + 'themes/' + themeName + '/easyui.css'; $yxuiTheme.attr('href', href); var $iframe = $('iframe'); if ($iframe.length > 0) { for (var i = 0; i < $iframe.length; i++) { var ifr = $iframe[i]; $(ifr).contents().find('#easyuiTheme').attr('href', href); } } $.cookie('yxuiTheme', themeName, { expires : 7 }); }; // 将form表单元素的值序列化成对象 yxui.serializeObject = function(form) { var o = {}; $.each(form.serializeArray(), function(index) { if (o[this['name']]) { o[this['name']] = o[this['name']] + "," + this['value']; } else { o[this['name']] = this['value']; } }); return o; }; // 操作权限控制 operId yxui.operId = function(_this) { $("#_operId").val($(_this).attr("_operId")); $("#_resOperId").val($(_this).attr("_resOperId")); $("#_resOperKey").val($(_this).attr("_resOperKey")); // console.info("set->" + $("#_operId").val()); }; // form提交 formSubmit yxui.formSubmit = function(_datagrid, _dialog, _form, _url, _callbak) { var _arg = '_menuId=' + $("#_menuId").val() + '&_operId=' + $("#_operId").val() + '&_resOperId=' + $("#_resOperId").val() + '&_resOperKey=' + $("#_resOperKey").val(); _url = yxui.refreshUrlLink(_url, _arg); if (_form.form('validate')) { _form.form('submit', { url : _url, success : function(data) { _callbak(data, _datagrid, _dialog, _form, _url); } }) } $("#_operId").val(''); }; // ajax提交 ajaxSubmit yxui.ajaxSubmit = function(_datagrid, _dialog, _form, _url, _data, _callbak) { // console.info("ajax get->" + $("#_operId").val()); _data._operId = $("#_operId").val(); _data._resOperId = $("#_resOperId").val(); _data._resOperKey = $("#_resOperKey").val(); $.ajax({ url : _url, type : 'post', data : _data, dataType : 'json', cache : false, success : function(response) { _callbak(response, _datagrid, _dialog, _form, _url, _data); } }); }; // refreshUrlLink yxui.refreshUrlLink = function(_url, _arg) { var index = _url.indexOf('?'); var length = _url.length; if (index < 0) { _url = _url + '?' + _arg; } else if (index == length - 1) { _url = _url + _arg; } else { _url = _url.substring(0, index + 1) + _arg + '&' + _url.substring(index + 1, length); } return _url; }; // dotoHtml yxui.dotoHtml = function(tos) { var returnHtml = $('#rowOperation').html(); if (null != returnHtml) { var maxArgsNumb = $('#_maxArgsNumb').val(); if (maxArgsNumb == 0) { return returnHtml; } else { for (var i = 0; i < maxArgsNumb; i++) { returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'", "g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]); } return returnHtml; } } else { return ""; } } // dotoHtmlById yxui.dotoHtmlById = function(id, tos) { var returnHtml = $('#' + id).html(); if (null != returnHtml) { var maxArgsNumb = tos.length; for (var i = 0; i < maxArgsNumb; i++) { returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'", "g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]); } return returnHtml; } else { return ""; } } // dotoDiyHtml yxui.dotoDiyHtml = function(returnHtml, tos, maxArgsNumb) { if (null != returnHtml) { if (null == maxArgsNumb || maxArgsNumb == 0) { return returnHtml; } else { for (var i = 0; i < maxArgsNumb; i++) { returnHtml = returnHtml.replace(new RegExp("'#arg" + i + "'", "g"), typeof(tos[i]) == 'undefined' ? 'this' : tos[i]); } return returnHtml; } } else { return ""; } } // replaceAll yxui.replaceAll = function(_str, _from, _to) { if (null != _str) { return _str.replace(new RegExp(_from, "g"), _to); } else { return ""; } } // getRequestArg yxui.getRequestArg = function() { var _url = location.search; var returnObject = {}; var index = _url.indexOf("?"); if (index != -1) { var str = _url.substr(index + 1); strs = str.split("&"); for (var i = 0; i < strs.length; i++) { returnObject[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return returnObject; } // xui.getUrlArg yxui.getUrlArg = function(_url) { var index = _url.indexOf("?"); if (index != -1) { var returnObject = {}; var str = _url.substr(index + 1); strs = str.split("&"); for (var i = 0; i < strs.length; i++) { returnObject[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } return returnObject; } return null; } function getrequest() { var url = location.search; // 获取url中"?"符后的字串 // alert(url.indexOf("?")) var therequest = {}; if (url.indexOf("?") != -1) { var str = url.substr(1); // alert(str) strs = str.split("&"); for (var i = 0; i < strs.length; i++) { therequest[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]); } } return therequest; } /** * 扩展treegrid diyload treegrid查询功能 */ $.extend($.fn.treegrid.methods, { diyload : function(jq, param) { return jq.each(function() { var opts = $(this).treegrid("options"); diyRequest(this, param); }); } }); function diyRequest(jq, param) { var opts = $.data(jq, "treegrid").options; if (param) { opts.queryParams = param; } if (!opts.url) { return; } var param = $.extend({}, opts.queryParams); if (opts.onBeforeLoad.call(jq, param) == false) { return; } setTimeout(function() { doRequest(); }, 0); function doRequest() { $.ajax({ type : opts.method, url : opts.url, data : param, dataType : "json", success : function(data) { $(jq).treegrid('loadData', data) }, error : function() { if (opts.onLoadError) { opts.onLoadError.apply(jq, arguments); } } }); } } /** * 扩展tree getCheckedExt 获得选中节点+实心节点 getSolidExt 获取实心节点 */ $.extend($.fn.tree.methods, { getCheckedExt : function(jq) { var checked = []; var checkbox2 = $(jq).find("span.tree-checkbox1,span.tree-checkbox2").parent(); $.each(checkbox2, function() { var thisData = { target : this, "checked" : true }; var node = $.extend({}, $.data(this, "tree-node"), thisData); checked.push(node); }); return checked; }, getSolidExt : function(jq) { var checked = []; var checkbox2 = $(jq).find("span.tree-checkbox2").parent(); $.each(checkbox2, function() { var node = $.extend({}, $.data(this, "tree-node"), { target : this }); checked.push(node); }); return checked; } }); /** * 扩展datagrid,添加动态增加或删除Editor的方法 */ $.extend($.fn.datagrid.methods, { addEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item.field); e.editor = item.editor; }); } else { var e = $(jq).datagrid('getColumnOption', param.field); e.editor = param.editor; } }, removeEditor : function(jq, param) { if (param instanceof Array) { $.each(param, function(index, item) { var e = $(jq).datagrid('getColumnOption', item); e.editor = {}; }); } else { var e = $(jq).datagrid('getColumnOption', param); e.editor = {}; } } }); /** * 扩展datagrid editor 增加带复选框的下拉树/增加日期时间组件/增加多选combobox组件 */ $.extend($.fn.datagrid.defaults.editors, { combocheckboxtree : { init : function(container, options) { var editor = $('<input />').appendTo(container); options.multiple = true; editor.combotree(options); return editor; }, destroy : function(target) { $(target).combotree('destroy'); }, getValue : function(target) { return $(target).combotree('getValues').join(','); }, setValue : function(target, value) { $(target).combotree('setValues', sy.getList(value)); }, resize : function(target, width) { $(target).combotree('resize', width); } }, datetimebox : { init : function(container, options) { var editor = $('<input />').appendTo(container); editor.datetimebox(options); return editor; }, destroy : function(target) { $(target).datetimebox('destroy'); }, getValue : function(target) { return $(target).datetimebox('getValue'); }, setValue : function(target, value) { $(target).datetimebox('setValue', value); }, resize : function(target, width) { $(target).datetimebox('resize', width); } }, multiplecombobox : { init : function(container, options) { var editor = $('<input />').appendTo(container); options.multiple = true; editor.combobox(options); return editor; }, destroy : function(target) { $(target).combobox('destroy'); }, getValue : function(target) { return $(target).combobox('getValues').join(','); }, setValue : function(target, value) { $(target).combobox('setValues', sy.getList(value)); }, resize : function(target, width) { $(target).combobox('resize', width); } } }); /** * 扩展 datagrid/treegrid 增加表头菜单,用于显示或隐藏列,注意:冻结列不在此菜单中 * * @param e * @param field */ var createGridHeaderContextMenu = function(e, field) { e.preventDefault(); var grid = $(this);/* grid本身 */ var headerContextMenu = this.headerContextMenu;/* grid上的列头菜单对象 */ if (!headerContextMenu) { var tmenu = $('<div style="width:150px;"></div>').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) { $('<div iconCls="icon-ok" field="' + fields[i] + '"/>').html(fildOption.title).appendTo(tmenu); } else { $('<div iconCls="icon-empty" field="' + 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 = $("<div class=\"validatebox-tip\">" + "<span class=\"validatebox-tip-content\">" + "</span>" + "<span class=\"validatebox-tip-pointer\">" + "</span>" + "</div>").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 $('<div/>').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扩展(重要)
....
相关推荐
easyUI+HighCharts+Aspose.cells+Aspose.word+Aspose.Pdf+WebService等的实例应用,easyui包括异步树加载,嵌套表格等,highcharts包括本地导出图片(仅限jpg)柱状,线状图例等,aspose.word、excel、pdf等使用的...
EasyUI 是一个基于 jQuery 的前端框架,用于快速开发简洁、美观、可响应的 Web 应用程序。这个压缩包包含了两个关键的 CSS 文件——`easyui.css` 和 `icon.css`,它们对于创建具有专业外观的用户界面至关重要。 `...
Easyui的扩展datagrid-dnd.js,实现拖动datagrid行到其他数据表格的必要文件
Knockout.JS 是一个JavaScript库,专门用于实现MVVM(Model-View-ViewModel)模式,简化了前端数据绑定和动态用户界面的创建。在ASP.NET MVC 4项目中,Knockout.JS可以无缝集成,帮助开发者实现在客户端实时更新视图...
detailview datagrid 没有专用下载链接,现在提供专门下载文件备用 easyui常用JS jquery.min jquery.easyui.mobile jquery.easyui.min easyloader datagrid-detailview
easyui,可用于开发尾巴项目时使用,美观,代码量少,更容易实现Web项目网站后台的开发
"Easyui Spring Mvc导出Excel"是一个常见的话题,它涉及了三个关键技术:Easyui、Spring MVC以及Excel导出。 Easyui是一个基于jQuery的UI框架,提供了一系列美观且易于使用的组件,如表格、下拉框、对话框等。在Web...
应用补丁的过程通常是这样的:首先,你需要将“jquery.easyui.patch.js”文件下载到你的项目中,并确保在页面中引入这个文件,通常是在引入jQuery和jQuery EasyUI之后。然后,当你初始化datagrid时,这个补丁就会...
本文档中包含所有和EasyUI开发相关的内容,以及翻译制作的中文API文档、开发库、皮肤库、扩展库等。包含完整开发工具包,格式采用pdf+exe+chm jQuery EasyUI 1.5.2 版本更新内容 Bug(修复) form:修复在调用...
3. EasyUI:EasyUI是基于jQuery的前端框架,提供了一系列的CSS样式和JavaScript组件,用于快速构建用户界面。它包含了诸如表格、表单、菜单、对话框等常用组件,极大地提升了开发效率,使得页面设计既美观又易于操作...
EasyUI 是一款基于 jQuery 的前端框架,主要用于快速构建用户界面,尤其适合开发企业级的 Web 应用。在“EasyUI+分页.zip”这个压缩包中,我们很显然会发现一个利用 EasyUI 和后端技术(如 JSP 和 Servlet)实现的...
1. **src**:源代码目录,包括HTML、CSS、JavaScript等前端资源,以及后端服务器端的代码,如Java、PHP或Node.js等。 2. **dist**:编译后的静态资源文件,供Web服务器直接部署。 3. **lib**:存放EasyUI和其他依赖...
本篇文章将介绍一种基于DWR、jquery2.x以及easyUI1.3.x的技术栈来构建富客户端应用的方法。该技术栈还包括了Struts2.x、Spring3.x等组件,共同构建出一个强大的Web开发框架。 #### 知识点二:jQuery EasyUI介绍 1....
支持datagrid扩展,在一条记录下面可以嵌套一个子datagrid,切记要在页面中引入该js
综合以上技术,"ASP.NET MVC5+EF6+EasyUI 1.4.3+Unity4.x注入的后台管理系统"是一个采用现代Web开发技术构建的高效、安全且易维护的后台管理解决方案。通过MVC5,开发者可以构建清晰的业务逻辑结构;EF6简化了数据库...
<script type="text/javascript" src="path/to/jquery.easyui.min.js"> ``` 注意保持文件路径的正确性。 ### 三、基础组件的使用 1. **对话框(Dialog)**:用于显示独立的信息区域。创建对话框可以使用 `...
4. **兼容性**:这些图标可以无缝集成到EasyUi项目中,无论是在CSS、HTML还是JavaScript中,都有相应的使用方法,使得开发更加便捷。 5. **扩展性**:由于图标数量众多,开发者可以根据需求选择合适的图标,同时也...
- `jquery.easyui.min.js`: 这是EasyUI的主要JavaScript文件,包含了所有组件和功能的实现。 - `easyloader.js`: 用于动态加载EasyUI组件,可以按需加载,减小页面加载负担。 - `licence_gpl.txt`、`license_...
EasyUI是由一系列预先定义好的CSS样式和JavaScript组件组成的,这些组件包括布局、表格、表单、窗口、菜单、对话框等,它们都是按照MVC(Model-View-Controller)模式设计的,使得开发者可以专注于业务逻辑,无需...