1、扩展模块定义
// commonSearch.js
layui.define(['jquery', 'form', 'laydate'], function (exports) {
var commonSearch = {
getPersonIdentity: function() {
// todo
},
getTljDictory: function() {
// todo
},
// todo
}
exports('commonSearch', commonSearch)
})
使用layui.define()
定义模块,其中jquery
,form
, laydate
都是已经存在于layui中的内置模块,可以在该扩展组件中使用。
这里定义了commonSearch对象,然后通过exports抛出变量。
2、注册
// layui.baseExtend.js
layui.config({
base: '/static/'
, version: '20190927'
}).extend({
commonSearch: "assets/js/commonSearch"
})
使用layui.config().extend({...})
进行多个内置模块的注册。
base
: 定义公共目录前缀,commonSearch的真实路径为/static/assets/js/commonSearch.js。
extend()
:以对象的形式声明抛出模块的使用名称以及模块文件对应路径。
官网中也可以使用use方法加载合并模块后的入口文件。
3、使用
在script引入layui.js后引入layui.baseExtend.js
<script src="/static/assets/lib/layui2.4.5/layui.js"></script>
<script src="/static/assets/js/layui.baseExtend.js"></script>
模块化引入使用
layui.use(['layer','table','commonSearch'], function(){
// todo
})
2、表格编辑自定义校验规则
官方提供update方法来更新表格数据,但是页面上还是渲染着输入内容,需要手动重置下。
table.on("edit(jylcmxTable)", function(obj) {
if(obj.field == "SJ") {
var reg = /^1[3456789]\d{9}$/;
if(!(reg.test(obj.value))) {
Hussar.error("手机号格式有误,请重新输入");
obj.tr.find('td[data-field=SJ] input').val("");
var newObj = JSON.parse(JSON.stringify(obj.data));
newObj.SJ = "";
obj.update(newObj);
}
}
})
3、表格列合并
aqfxHz.merge = function (tableId, res) {
var data = res.data;
var mergeIndex = 0;//定位需要添加合并属性的行数
var mark = 1; //这里涉及到简单的运算,mark是计算每次需要合并的格子数
var columsName = ['tljMc', 'jwdMc'];//需要合并的列名称
var columsIndex = [0, 1];//需要合并的列索引值
for (var k = 0; k < columsName.length; k++) { //这里循环所有要合并的列
var trArr = $('div[lay-id="' + tableId + '"] .layui-table-body>.layui-table').find("tr");//所有行
for (var i = 1; i < res.data.length; i++) { //这里循环表格当前的数据
var tdCurArr = trArr.eq(i).find("td").eq(columsIndex[k]);//获取当前行的当前列
var tdPreArr = trArr.eq(mergeIndex).find("td").eq(columsIndex[k]);//获取相同列的第一列
if (data[i][columsName[k]] === data[i - 1][columsName[k]]) { //后一行的值与前一行的值做比较,相同就需要合并
mark += 1;
tdPreArr.each(function () {//相同列的第一列增加rowspan属性
$(this).attr("rowspan", mark);
});
tdCurArr.each(function () {//当前行隐藏
$(this).css("display", "none");
});
} else {
mergeIndex = i;
mark = 1;//一旦前后两行的值不一样了,那么需要合并的格子数mark就需要重新计算 }
}
}
mergeIndex = 0;
mark = 1;
}
}