easyui1.32 各种问题汇总
问题一
场景:tab切换,每个tab里用div放一个dataGrid,默认display:none隐藏,当display:'block'的时候,dataGrid会显示不全,仅显示一条线。
解决方法:切换到当前tab的时候执行方法 $("#tableid").datagrid("resize");即可解决。
http://bbs.csdn.net/topics/390666562
问题二
场景:dataGrid单元格添加超链接,想点击修改,如何获取当前行数据的问题。
$('#templateGrid').datagrid({ columns:[[ { title:'', field: 'id', checkbox:true, width:10 } { title: '修改', align:'center', field: 'modify', width:50, formatter:function(value,row,index){ return '<a href="javascript:;" style="color:#00a9ff">修改</a>' } ]], onClickCell:function(rowIndex, field, value){//修改弹层 if(field=='modify'){ var row = $('#templateGrid').datagrid('getData').rows[rowIndex]; console.info(row)//当前行数据 }
问题三
//弹层比如Dialog里的表单装载dataGrid选择行数据的便捷方法
$('#xx').form('load',{ ruleName:row.ruleName })
问题四
场景:弹层里动态生成表单比如combobox,下拉列表看不见的问题
比如我在用layer做弹层的时候,由于layer的层级比较高,combobox的下拉列表就看不到,造成展不开的错觉,实际上是由于下拉列表被弹层所覆盖,如果用layer做弹层,只需要修改layer源码查找
z-index,改小一点就行。
问题五
datagrid删除选择的行或者多行
function delRows(dgName) { var rows = $(dgName).datagrid("getSelections"); var copyRows = []; for (var j = 0; j < rows.length; j++) { copyRows.push(rows[j]); } for (var i = 0; i < copyRows.length; i++) { var index = $(dgName).datagrid('getRowIndex', copyRows[i]); $(dgName).datagrid('deleteRow', index); } } delRows('#templateGrid')
问题六
datebox和datetimebox样式修改,替换原基础风格metro风格easyui.css里日历部分
.calendar { border-width: 1px; border-style: solid; /* padding: 1px;*/ overflow: hidden; font-size: 12px; } .calendar table { border-collapse: separate; font-size: 12px; width: 100%; height: 100%; } .calendar-body thead tr th{ border-bottom:1px solid #ccc; font-weight:normal; color:#333; height: 21px!important; line-height: 21px!important; } .calendar-body tbody tr td{ height: 21px!important; line-height: 21px!important; background-color: #fff; color: #333; } .calendar-selected{ background-color: #F32043!important; color: #fff!important; border:none!important; } .calendar-day.calendar-hover{ background:#f54766!important; color:#fff; border:none!important; } .datebox-button{padding:5px 0!important;} .datebox-button a{ border: 1px solid #ccc; height: 20px; line-height: 20px; padding:0 6px; font-weight:normal; color:#333; display:inline-block; } .datebox-button a:hover{ background:#F6F6F6; color:#333 } .calendar-noborder { border: 0; } .calendar-header { position: relative; height: 22px; padding:5px 0; background-color: #D91600; } .calendar-title { text-align: center; height: 22px; } .calendar-title span { position: relative; display: inline-block; top: 2px; padding: 0 3px; height: 18px; line-height: 18px; cursor: pointer; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px; color:#fff } .calendar-prevmonth, .calendar-nextmonth, .calendar-prevyear, .calendar-nextyear { position: absolute; top: 50%; margin-top: -7px; width: 14px; height: 14px; cursor: pointer; font-size: 1px; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px; } .calendar-prevmonth { left: 20px; background: url('images/calendar_arrows.png') no-repeat -18px -2px; } .calendar-nextmonth { right: 20px; background: url('images/calendar_arrows.png') no-repeat -34px -2px; } .calendar-prevyear { left: 3px; background: url('images/calendar_arrows.png') no-repeat -1px -2px; } .calendar-nextyear { right: 3px; background: url('images/calendar_arrows.png') no-repeat -49px -2px; } .calendar-body { position: relative; } .calendar-body th, .calendar-body td { text-align: center; } .calendar-day { border: 0; /* padding: 1px;*/ cursor: pointer; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px; } .calendar-other-month { /* opacity: 0.3; filter: alpha(opacity=30);*/ color:#999!important; } .calendar-other-month:hover{ color:#fff!important; } .calendar-menu { position: absolute; top: 0; left: 0; width: 180px; height: 150px; padding: 5px; font-size: 12px; display: none; overflow: hidden; } .calendar-menu-year-inner { text-align: center; padding-bottom: 5px; } .calendar-menu-year { width: 40px; text-align: center; border-width: 1px; border-style: solid; margin: 0; padding: 2px; font-weight: bold; } .calendar-menu-prev, .calendar-menu-next { display: inline-block; width: 21px; height: 21px; vertical-align: top; cursor: pointer; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px; } .calendar-menu-prev { margin-right: 10px; background: url('images/calendar_arrows.png') no-repeat 2px 2px; } .calendar-menu-next { margin-left: 10px; background: url('images/calendar_arrows.png') no-repeat -45px 2px; } .calendar-menu-month { text-align: center; cursor: pointer; font-weight: bold; -moz-border-radius: 0px 0px 0px 0px; -webkit-border-radius: 0px 0px 0px 0px; border-radius: 0px 0px 0px 0px; } .calendar-body th, .calendar-menu-month { color: #919191; } .calendar-day { color: #444; } .calendar-sunday { color: #CC2222; } .calendar-saturday { color: #00ee00; } .calendar-today { color: #0000ff; } .calendar-menu-year { border-color: #ddd; } .calendar { border-color: #ddd; } .calendar-header { background: #D91600; } .calendar-body, .calendar-menu { background: #fff; } .calendar-body th { background: #fff; } .calendar-hover, .calendar-nav-hover, .calendar-menu-hover { background-color: #F54766; color: #444; } .calendar-hover { border: 1px solid #ddd; padding: 0; } .calendar-selected { background-color: #CCE6FF; color: #000; border: 1px solid #99cdff; padding: 0; } .datebox-calendar-inner { height: 190px; } .datebox-calendar-inner .spinner{margin-left:3px!important;} .datebox-button { height: 18px; margin:5px; margin-top:0; font-size: 12px; text-align: center; } .datebox-current, .datebox-close, .datebox-ok { text-decoration: none; /* font-weight: bold; opacity: 0.6; filter: alpha(opacity=60);*/ } .datebox-current, .datebox-close { float: left; } .datebox-close { float: right; } .datebox-button-hover { opacity: 1.0; filter: alpha(opacity=100); } .datebox .combo-arrow { background-image: url('images/datebox_arrow.png'); background-position: center center; } .combo.datebox{padding-right:10px;} .datebox-button { background-color: #fff; } .datebox-current, .datebox-close, .datebox-ok { color: #777; }
JS部分修改:搜索下面两部分进行修改宽度,默认width:180
$.fn.calendar.defaults={width:240,height:180...
$.fn.datebox.defaults=$.extend({},$.fn.combo.defaults,{panelWidth:240...
图片替换:calendar_arrows(白色) spinner_arrows两张图片
最终效果:
问题七
datagrid行内单元格鼠标悬浮改变其内容为查看详情
var _grid = $('#templateGrid').datagrid({ //...列 onLoadSuccess: function () { //鼠标悬停效果 var tableTd = $('div.datagrid-body td[field="selection"]'); //selection是列名 tableTd.each(function () { var _this = $(this); var index = _this.parent('tr').attr('datagrid-row-index'); var rows = _grid.datagrid('getRows'); var currentRow = rows[index]; var currentValue = currentRow.selection //selection是列名 _this.mouseenter(function () { _this.find('a').text('查看详情') }).mouseleave(function () { _this.find('a').text(currentValue) }) }); } })
问题八
datagrid列字段太多,当没有数据时,字段显示不全,滚动条不出现的问题
给datagrid配置属性时设置一个事件: onBeforeLoad:function () { $(this).prev(".datagrid-view2").children(".datagrid-body").html("<div style='width:" + $(this).prev(".datagrid-view2").find(".datagrid-header-row").width() + "px;border:solid 0px;height:1px;'></div>"); } 注:datagrid如果配置了属性fitColumns:true要删掉 当装载表格数据时重写onBeforeLoad方法 $('#sampleGrid').datagrid({ onBeforeLoad: null, //重写onBeforeLoad方法 'data': data });
问题九
日历时间框的格式化
$('.easyui-datebox').datebox({ formatter:function(date){ var y = date.getFullYear(); var m = date.getMonth()+1; var d = date.getDate(); return y+'-'+m+'-'+d; } }) //date的格式化yyyy-mm-dd $('.easyui-datetimebox').datetimebox({ formatter:function(date){ var y = date.getFullYear(); var m = date.getMonth()+1; var d = date.getDate(); var h = date.getHours(); var min = date.getMinutes(); var sec = date.getSeconds(); var str = y+'/'+(m<10?('0'+m):m)+'/'+(d<10?('0'+d):d)+'/'+' '+(h<10?('0'+h):h)+':'+(min<10?('0'+min):min)+':'+(sec<10?('0'+sec):sec); return str; } });//datetime的格式化yyyy/m/d h:m:s
问题十
validaebox自定义验证规则添加
//扩展验证规则 $.fn.validatebox.defaults = { required: false, validType: null, missingMessage: '输入不能为空.', invalidMessage: null, rules: { email:{ validator: function(value){ return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value); }, message: '请输入正确的邮箱地址.' }, url: { validator: function(value){ return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value); }, message: '请输入正确的URL链接.' }, //定义字符输入数量的区间(length) length: { validator: function(value, param){ var len = $.trim(value).length; return len >= param[0] && len <= param[1] }, message: '内容长度介于{0}和{1}之间.' }, //定义字符最小输入数量(minLength) minLength: { validator: function(value, param){ return value.length >= param[0]; }, message: '最少输入 {0} 个字符.' }, //定义字符最大输入数量(maxLength) maxLength: { validator: function(value, param){ return value.length <= param[0]; }, message: '最多输入 {0} 个字符.' }, //自定义正则校验表达式(regExp) regExp: { validator: function (value, param) { console.info(param[0]) var regExp = param[0]; var re = new RegExp(regExp); return re.test(value); }, message: '{1}' }, //自定义校验函数接口(checker) checker: { validator: function (value, param) { var checker = param[0]; if ($.isFunction(checker)) { return checker(value); } return true; }, message: '{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: '请输入正确的电话号码.' }, mobile: { validator: function(value) { return /^1\d{10}$/.test(value); }, message: '手机号码不正确.' }, idcard: { validator: function(value) { return /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/.test(value); }, message: '身份证号码不正确.' }, ip: { validator: function(value) { return /^([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.([0-9]|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])$/.test(value); }, message: 'ip地址格式不正确.' }, text: { validator: function(value) { return /^[A-Za-z0-9\u4e00-\u9fa5]+$/.test(value); }, message: '只能输入数字字母中文不允许有符号.' }, number: { validator: function(value) { return /^[+-]?\d+(\.\d+)?$/.test(value); }, message: '只能输入数字正负数或小数.' } } }; //使用说明 //是否必须输入(required) using(["validatebox"], function () { $('#validatebox1').validatebox({ required: true }); }); //定义字符最小输入数量(minLength) using(["validatebox"], function () { $('#validatebox2').validatebox({ required: true, validType:'minLength[5]' }); }); //定义字符最大输入数量(maxLength) using(["validatebox"], function () { $('#validatebox3').validatebox({ required: true, validType:'maxLength[5]' }); }); //定义字符输入数量的区间(length) using(["validatebox"], function () { $('#validatebox4').validatebox({ required: true, validType:'length[1,5]' }); }); //自定义正则校验表达式(regExp) using(["validatebox"], function () { $('#validatebox6').validatebox({ required: true, validType:"regExp['^[A-Za-z]*$','必须为字母']" }); }); //自定义校验函数接口(checker) var customFn=function(value){ if(/^\d*$/.test(value)){ return true; }else{ return false; } } using(["validatebox"], function () { $('#validatebox7').validatebox({ required: true, validType:"checker[customFn,'必须为符合自定义校验函数的输入值(这里假定必须为数字)']" }); }); //定义输入类型邮件(inputType-email) using(["validatebox"], function () { $('#validatebox9').validatebox({ required: true, validType:'email' }); }); //定义输入类型电话号码(inputType-phone) using(["validatebox"], function () { $('#validatebox10').validatebox({ required: true, validType:'phone' }); }); //定义输入类型手机号码(inputType-mobile) using(["validatebox"], function () { $('#validatebox12').validatebox({ required: true, validType:'mobile' }); }); //定义输入类型身份证号码(inputType-idcard) using(["validatebox"], function () { $('#validatebox13').validatebox({ required: true, validType:'idcard' }); }); //定义输入类型IP地址(inputType-ip) using(["validatebox"], function () { $('#validatebox14').validatebox({ required: true, validType:'ip' }); }); //定义输入类型文本(inputType-text) using(["validatebox"], function () { $('#validatebox15').validatebox({ required: true, validType:'text' }); }); //定义输入类型数字(inputType-number) using(["validatebox"], function () { $('#validatebox16').validatebox({ required: true, validType:'number' }); });
easyui sleect下拉框插件独立版: https://files.cnblogs.com/files/leyi/easyuiSelect.rar