commit
bfca2f1a51
@ -16,7 +16,6 @@
|
|||||||
</style>
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
|
|
||||||
<form class="layui-form" method="get" lay-filter="top" id="AAA">
|
<form class="layui-form" method="get" lay-filter="top" id="AAA">
|
||||||
<div class="layui-form-item">
|
<div class="layui-form-item">
|
||||||
<div class="layui-input-inline">
|
<div class="layui-input-inline">
|
||||||
@ -264,9 +263,7 @@
|
|||||||
<br><br><br>
|
<br><br><br>
|
||||||
|
|
||||||
|
|
||||||
<script src="../src/layui.js"></script>
|
<script src="../src/layui.js" src1="https://cdn.staticfile.org/layui/2.6.8/layui.js"></script>
|
||||||
<!-- <script src="../build/lay/dest/layui.all.js"></script> -->
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|
||||||
layui.use(['form', 'util', 'laydate'], function(){
|
layui.use(['form', 'util', 'laydate'], function(){
|
||||||
@ -288,6 +285,7 @@
|
|||||||
/^\d+\.\b\d{2}\b$/
|
/^\d+\.\b\d{2}\b$/
|
||||||
,'金额必须为小数保留两位'
|
,'金额必须为小数保留两位'
|
||||||
]
|
]
|
||||||
|
//,n: [/^(\d)+$/, '数字校验']
|
||||||
});
|
});
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -163,7 +163,7 @@ layui.use(['table', 'dropdown'], function(){
|
|||||||
return td.find('select').val();
|
return td.find('select').val();
|
||||||
}}
|
}}
|
||||||
,{field:'sign', title:'签名', minWidth: 200, style:'color: #5FB878', edit: 'textarea'}
|
,{field:'sign', title:'签名', minWidth: 200, style:'color: #5FB878', edit: 'textarea'}
|
||||||
,{field: 'experience', title: '积分', width: 100, sort: true, align:'center', totalRow: !1 ? '{{=d.LAY_COL.field}}' : '{{= d.TOTAL_NUMS }} 分 😊', templet: '<div><a href="" class="layui-table-link">{{ d.experience }}</a> 分</div>'}
|
,{field: 'experience', title: '积分', width: 100, sort: true, align:'center', totalRow: !1 ? true : '{{= d.TOTAL_NUMS }} 分 😊', templet: '<div><a href="" class="layui-table-link">{{= d[d.LAY_COL.field] }}</a> 分</div>'}
|
||||||
,{field:'ip', title:'IP', width: 120, align: 'right'}
|
,{field:'ip', title:'IP', width: 120, align: 'right'}
|
||||||
,{field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{= parseInt(d.TOTAL_NUMS) }} 次'}
|
,{field:'checkin', title:'打卡', width: 100, sort: true, totalRow: '{{= parseInt(d.TOTAL_NUMS) }} 次'}
|
||||||
,{field:'joinTime', title:'加入时间', width: 120}
|
,{field:'joinTime', title:'加入时间', width: 120}
|
||||||
@ -405,7 +405,7 @@ layui.use(['table', 'dropdown'], function(){
|
|||||||
}, function(value, index){
|
}, function(value, index){
|
||||||
obj.update({
|
obj.update({
|
||||||
email: value
|
email: value
|
||||||
});
|
}, true);
|
||||||
/*
|
/*
|
||||||
// 上述 obj.update() 只是在前端临时更新数据视图
|
// 上述 obj.update() 只是在前端临时更新数据视图
|
||||||
// 在实际业务中,当发送修改请求成功后,可再执行 reloadData 来重载数据
|
// 在实际业务中,当发送修改请求成功后,可再执行 reloadData 来重载数据
|
||||||
@ -448,7 +448,7 @@ layui.use(['table', 'dropdown'], function(){
|
|||||||
|
|
||||||
var update = {};
|
var update = {};
|
||||||
update[field] = value;
|
update[field] = value;
|
||||||
obj.update(update);
|
obj.update(update, true);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
@ -671,9 +671,9 @@ layui.define('layer', function(exports){
|
|||||||
// elem 即要验证的区域表单选择器 - return true or false
|
// elem 即要验证的区域表单选择器 - return true or false
|
||||||
Form.prototype.validate = function(elem){
|
Form.prototype.validate = function(elem){
|
||||||
var that = this;
|
var that = this;
|
||||||
var stop = null; //验证不通过状态
|
var stop = null; // 验证不通过状态
|
||||||
var verify = form.config.verify; //验证规则
|
var verify = form.config.verify; // 验证规则
|
||||||
var DANGER = 'layui-form-danger'; //警示样式
|
var DANGER = 'layui-form-danger'; // 警示样式
|
||||||
|
|
||||||
elem = $(elem);
|
elem = $(elem);
|
||||||
|
|
||||||
@ -688,38 +688,42 @@ layui.define('layer', function(exports){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//开始校验
|
// 开始校验
|
||||||
layui.each(elem, function(_, item){
|
layui.each(elem, function(_, item){
|
||||||
var othis = $(this);
|
var othis = $(this);
|
||||||
var verifyStr = othis.attr('lay-verify') || '';
|
var verifyStr = othis.attr('lay-verify') || '';
|
||||||
var vers = verifyStr.split('|');
|
var vers = verifyStr.split('|');
|
||||||
var verType = othis.attr('lay-verType'); //提示方式
|
var verType = othis.attr('lay-verType'); // 提示方式
|
||||||
var value = othis.val();
|
var value = othis.val();
|
||||||
|
|
||||||
othis.removeClass(DANGER); //移除警示样式
|
othis.removeClass(DANGER); // 移除警示样式
|
||||||
|
|
||||||
//遍历元素绑定的验证规则
|
// 遍历元素绑定的验证规则
|
||||||
layui.each(vers, function(_, thisVer){
|
layui.each(vers, function(_, thisVer){
|
||||||
var isTrue //是否命中校验
|
var isTrue; // 是否命中校验
|
||||||
,errorText = '' //错误提示文本
|
var errorText = ''; // 错误提示文本
|
||||||
,isFn = typeof verify[thisVer] === 'function';
|
var rule = verify[thisVer]; // 获取校验规则
|
||||||
|
|
||||||
//匹配验证规则
|
// 匹配验证规则
|
||||||
if(verify[thisVer]){
|
if(rule){
|
||||||
var isTrue = isFn ? errorText = verify[thisVer](value, item) : !verify[thisVer][0].test(value)
|
var isTrue = typeof rule === 'function'
|
||||||
|
? errorText = rule(value, item)
|
||||||
|
: !rule[0].test(value);
|
||||||
|
|
||||||
//是否属于美化替换后的表单元素
|
// 是否属于美化替换后的表单元素
|
||||||
,isForm2Elem = item.tagName.toLowerCase() === 'select' || /^checkbox|radio$/.test(item.type);
|
var isForm2Elem = item.tagName.toLowerCase() === 'select' || (
|
||||||
|
/^checkbox|radio$/.test(item.type)
|
||||||
|
);
|
||||||
|
|
||||||
errorText = errorText || verify[thisVer][1];
|
errorText = errorText || rule[1];
|
||||||
|
|
||||||
if(thisVer === 'required'){
|
if(thisVer === 'required'){
|
||||||
errorText = othis.attr('lay-reqText') || errorText;
|
errorText = othis.attr('lay-reqText') || errorText;
|
||||||
}
|
}
|
||||||
|
|
||||||
//如果是必填项或者非空命中校验,则阻止提交,弹出提示
|
// 若为必填项或者非空命中校验,则阻止提交,弹出提示
|
||||||
if(isTrue){
|
if(isTrue){
|
||||||
//提示层风格
|
// 提示层风格
|
||||||
if(verType === 'tips'){
|
if(verType === 'tips'){
|
||||||
layer.tips(errorText, function(){
|
layer.tips(errorText, function(){
|
||||||
if(typeof othis.attr('lay-ignore') !== 'string'){
|
if(typeof othis.attr('lay-ignore') !== 'string'){
|
||||||
@ -732,7 +736,7 @@ layui.define('layer', function(exports){
|
|||||||
} else if(verType === 'alert') {
|
} else if(verType === 'alert') {
|
||||||
layer.alert(errorText, {title: '提示', shadeClose: true});
|
layer.alert(errorText, {title: '提示', shadeClose: true});
|
||||||
}
|
}
|
||||||
//如果返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示
|
// 若返回的为字符或数字,则自动弹出默认提示框;否则由 verify 方法中处理提示
|
||||||
else if(/\bstring|number\b/.test(typeof errorText)){
|
else if(/\bstring|number\b/.test(typeof errorText)){
|
||||||
layer.msg(errorText, {icon: 5, shift: 6});
|
layer.msg(errorText, {icon: 5, shift: 6});
|
||||||
}
|
}
|
||||||
@ -741,33 +745,17 @@ layui.define('layer', function(exports){
|
|||||||
(isForm2Elem ? othis.next().find('input') : item).focus();
|
(isForm2Elem ? othis.next().find('input') : item).focus();
|
||||||
}, 7);
|
}, 7);
|
||||||
|
|
||||||
/*
|
|
||||||
// 非移动设备自动定位焦点
|
|
||||||
if(!device.mobile){
|
|
||||||
setTimeout(function(){
|
|
||||||
(isForm2Elem ? othis.next().find('input') : item).focus();
|
|
||||||
}, 7);
|
|
||||||
} else { // 移动设备定位
|
|
||||||
$dom.scrollTop(function(){
|
|
||||||
try {
|
|
||||||
return (isForm2Elem ? othis.next() : othis).focus().offset().top - 15
|
|
||||||
} catch(e){
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
}());
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
othis.addClass(DANGER);
|
othis.addClass(DANGER);
|
||||||
return stop = true;
|
return stop = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
if(stop) return stop;
|
if(stop) return stop;
|
||||||
});
|
});
|
||||||
|
|
||||||
return !stop;
|
return !stop;
|
||||||
}
|
};
|
||||||
|
|
||||||
// 提交表单并校验
|
// 提交表单并校验
|
||||||
var submit = Form.prototype.submit = function(filter, callback){
|
var submit = Form.prototype.submit = function(filter, callback){
|
||||||
|
@ -1144,16 +1144,16 @@ layui.define(['laytpl', 'laypage', 'form', 'util'], function(exports){
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
//数据合计行
|
// 数据合计行
|
||||||
Class.prototype.renderTotal = function(data, totalRowData){
|
Class.prototype.renderTotal = function(data, totalRowData){
|
||||||
var that = this
|
var that = this;
|
||||||
,options = that.config
|
var options = that.config;
|
||||||
,totalNums = {};
|
var totalNums = {};
|
||||||
|
|
||||||
if(!options.totalRow) return;
|
if(!options.totalRow) return;
|
||||||
|
|
||||||
layui.each(data, function(i1, item1){
|
layui.each(data, function(i1, item1){
|
||||||
//若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])
|
// 若数据项为空数组,则不往下执行(因为删除数据时,会将原有数据设置为 [])
|
||||||
if(layui.type(item1) === 'array' && item1.length === 0) return;
|
if(layui.type(item1) === 'array' && item1.length === 0) return;
|
||||||
|
|
||||||
that.eachCols(function(i3, item3){
|
that.eachCols(function(i3, item3){
|
||||||
@ -1171,56 +1171,60 @@ layui.define(['laytpl', 'laypage', 'form', 'util'], function(exports){
|
|||||||
var tds = [];
|
var tds = [];
|
||||||
that.eachCols(function(i3, item3){
|
that.eachCols(function(i3, item3){
|
||||||
var field = item3.field || i3;
|
var field = item3.field || i3;
|
||||||
|
|
||||||
|
// 合计数据的特定字段
|
||||||
|
var TOTAL_NUMS = totalRowData && totalRowData[item3.field];
|
||||||
|
|
||||||
//td 内容
|
// td 内容
|
||||||
var content = function(){
|
var content = function(){
|
||||||
var text = item3.totalRowText || ''
|
var text = item3.totalRowText || '';
|
||||||
,decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2
|
var decimals = 'totalRowDecimals' in item3 ? item3.totalRowDecimals : 2;
|
||||||
,thisTotalNum = parseFloat(totalNums[field]).toFixed(decimals)
|
var thisTotalNum = parseFloat(totalNums[field]).toFixed(decimals);
|
||||||
,tplData = {
|
var tplData = {
|
||||||
LAY_COL: item3
|
LAY_COL: item3
|
||||||
}
|
};
|
||||||
,getContent;
|
|
||||||
|
|
||||||
tplData[field] = thisTotalNum;
|
tplData[field] = thisTotalNum;
|
||||||
|
|
||||||
//获取自动计算的合并内容
|
// 获取自动计算的合并内容
|
||||||
getContent = item3.totalRow ? (parseTempData.call(that, {
|
var getContent = item3.totalRow ? (parseTempData.call(that, {
|
||||||
item3: item3
|
item3: item3
|
||||||
,content: thisTotalNum
|
,content: thisTotalNum
|
||||||
,tplData: tplData
|
,tplData: tplData
|
||||||
}) || text) : text;
|
}) || text) : text;
|
||||||
|
|
||||||
//如果直接传入了合计行数据,则不输出自动计算的结果
|
// 如果直接传入了合计行数据,则不输出自动计算的结果
|
||||||
return totalRowData ? (totalRowData[item3.field] || getContent) : getContent;
|
return TOTAL_NUMS || getContent;
|
||||||
}()
|
}();
|
||||||
,td = ['<td data-field="'+ field +'" data-key="'+ options.index + '-'+ item3.key +'" '+ function(){
|
|
||||||
|
// td 容器
|
||||||
|
var td = ['<td data-field="'+ field +'" data-key="'+ options.index + '-'+ item3.key +'" '+ function(){
|
||||||
var attr = [];
|
var attr = [];
|
||||||
if(item3.align) attr.push('align="'+ item3.align +'"'); //对齐方式
|
if(item3.align) attr.push('align="'+ item3.align +'"'); // 对齐方式
|
||||||
if(item3.minWidth) attr.push('data-minwidth="'+ item3.minWidth +'"'); //单元格最小宽度
|
if(item3.minWidth) attr.push('data-minwidth="'+ item3.minWidth +'"'); // 单元格最小宽度
|
||||||
return attr.join(' ');
|
return attr.join(' ');
|
||||||
}() +' class="'+ function(){ //追加样式
|
}() +' class="'+ function(){ // 追加样式
|
||||||
var classNames = [];
|
var classNames = [];
|
||||||
if(item3.hide) classNames.push(HIDE); //插入隐藏列样式
|
if(item3.hide) classNames.push(HIDE); // 插入隐藏列样式
|
||||||
if(!item3.field) classNames.push(ELEM_COL_SPECIAL); //插入特殊列样式
|
if(!item3.field) classNames.push(ELEM_COL_SPECIAL); // 插入特殊列样式
|
||||||
return classNames.join(' ');
|
return classNames.join(' ');
|
||||||
}() +'">'
|
}() +'">'
|
||||||
,'<div class="layui-table-cell laytable-cell-'+ function(){ //返回对应的CSS类标识
|
,'<div class="layui-table-cell laytable-cell-'+ function(){ // 返回对应的CSS类标识
|
||||||
var str = (options.index + '-' + item3.key);
|
var str = (options.index + '-' + item3.key);
|
||||||
return item3.type === 'normal' ? str
|
return item3.type === 'normal' ? str
|
||||||
: (str + ' laytable-cell-' + item3.type);
|
: (str + ' laytable-cell-' + item3.type);
|
||||||
}() +'"'+ function(){
|
}() +'"'+ function(){
|
||||||
var attr = [];
|
var attr = [];
|
||||||
if(item3.style) attr.push('style="'+ item3.style +'"'); //自定义单元格样式
|
if(item3.style) attr.push('style="'+ item3.style +'"'); // 自定义单元格样式
|
||||||
return attr.join(' ');
|
return attr.join(' ');
|
||||||
}() +'>' + function(){
|
}() +'>' + function(){
|
||||||
var totalRow = item3.totalRow || options.totalRow;
|
var totalRow = item3.totalRow || options.totalRow;
|
||||||
|
|
||||||
//如果 totalRow 参数为字符类型,则解析为自定义模版
|
// 如果 totalRow 参数为字符类型,则解析为自定义模版
|
||||||
if(typeof totalRow === 'string'){
|
if(typeof totalRow === 'string'){
|
||||||
return laytpl(totalRow).render($.extend({
|
return laytpl(totalRow).render($.extend({
|
||||||
TOTAL_NUMS: totalNums[field]
|
TOTAL_NUMS: TOTAL_NUMS || totalNums[field],
|
||||||
,LAY_COL: item3
|
LAY_COL: item3
|
||||||
}, item3));
|
}, item3));
|
||||||
}
|
}
|
||||||
return content;
|
return content;
|
||||||
|
Loading…
Reference in New Issue
Block a user