LK最近使用layui跟换i了系统中的前端框架,现将一些知识点做一总结:
layui官网:https://www.layui.com/doc/
介绍:是一款采用自身模块规范编写的前端 UI 框架,遵循原生 HTML/CSS/JS 的书写与组织形式,门槛极低,拿来即用。
- code目录结构
- 使用方法
获得 layui 后,引入
./layui/css/layui.css
./layui/layui.js
- 使用
项目中采用的是它的模块化方法:
layui.use([‘table’, ‘form’], function() {
var table = layui.table;
var form = layui.form;
})
4.表格使用
<table id="demo" lay-filter="test"></table>
var tabObj = table.render({
elem : '#demo',
url : ctx + '/showUsers.do',// 数据接口
method : "post",
toolbar : '#toolbarDemo',//头部工具条
page : true, // 开启分页
cols : [[ // 表头
{
type : 'checkbox'
}, {
title : '序号',
type : 'numbers'
}, {
field : 'id',
title : 'ID',
width : 80,
sort : true,
fixed : 'left',
hide : true
}, {
field : 'username',
title : '用户名',
width : 160
}, {
field : 'role',
title : '用户类型',
width : 160
// sort : true
} , {
field : 'email',
title : '邮箱',
width : 160
// sort : true
} , {
field : 'status',
title : '状态',
width : 160,
hide : true
// sort : true
} , {
field : 'administration',
title : '管理',
width : 280
// sort : true
}]],
request : {
pageName : 'page',// 页码的参数名称,默认:page
limitName : 'rows' // 每页数据量的参数名,默认:limit
},
response : {
statusCode : 200,// 规定成功的状态码,默认:0
// msgNa 'hint', //规定状态信息的字段名称,默认:msg
countName : 'records', // 规定数据总数的字段名称,默认:count
dataName : 'rows' // 规定数据列表的字段名称,默认:data
},
done : function(res, curr, count) {//数据渲染完的回类似于bootstrap中的format函数
var trs = $("#maindiv table").find("tr");
for (var i = 0; i < trs.length; i++) {
var dtr = trs[i];
// 格式化用户类型
var td4 = $(dtr).find("td").eq(4);
var role = $(td4).find("div").html()
var v = formatUserType(role);
$(td4).find("div").html(v)
var td7 = $(dtr).find("td").eq(7);
// 格式化操作按钮
var td6 = $(dtr).find("td").eq(6);
var status = $(td6).find("div").html()
var btn = formatBtn(status, role)
$(td7).find("div").html(btn)
}
}
});
// 头工具栏事件
table.on('toolbar(test)', function(obj) {
var checkStatus = table.checkStatus(obj.config.id);
// 添加新用户
if (obj.event == "addUser") {
var addUser = layer.open({//弹出框
type : 1,
skin : 'layui-layer-demo', // 样式类名
anim : 0,
title : ['添 加 新 用户', 'font-size:18px;'],
area : ['800px', '500px'],
content : $("#addUser"),//所弹出内容的id
closeBtn : 1,
end : function() {//弹出完的回调
//清楚记录
$("#user_name").val("")
$("#user_type").val("请选择用户类型")
$("#user_pass").val("")
$("#confirm_user_pass").val("")
$("#user_email").val("")
重新渲染form
form.render('select');
form.render()
}
});
layer.full(addUser);
}
});
- form使用
<!--添加窗口-->
<div id="addUser" style="display:none;margin:10px" >
<form class="layui-form" lay-filter="addUser" >
<div class="layui-form-item">
<label class="layui-form-label" style="width: 100px" ><span class="red">*</span>用户名:</label>
<div class="layui-input-inline">
<input type="text" name="user_name" id="user_name" value="" style="width: 120px" lay-verify="required|userName" class="layui-input">
</div>
<span id="username_error"style="display:none;" class="red"> </span>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: 100px" ><span class="red">*</span>用户类型:</label>
<div class="layui-input-inline" style="width: 120px">
<select lay-verify="required" lay-filter="user_type" class="u_select" id="user_type" name="user_type">
<option value="" selected="true">请选择用户类型</option>
<option value="1" >管理员</option>
<option value="2" >普通用户</option>
</select>
</div>
<span id="groupname_error"style="display:none;" class="red"> </span>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: 100px" ><span class="red">*</span>登录密码:</label>
<div class="layui-input-inline" style="width: 120px">
<input type="text" name="user_pass" id="user_pass" value="" style="width: 120px" lay-verify="required|user_pass" class="layui-input">
</div>
<span id="dbId_error"style="display:none;" class="red"> </span>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: 100px" ><span class="red">*</span>确认密码:</label>
<div class="layui-input-inline" style="width: 120px">
<input type="text" name="confirm_user_pass" id="confirm_user_pass" value="" style="width: 120px" lay-verify="required|confirm_user_pass" class="layui-input">
</div>
<span id="confirm_user_pass_error"style="display:none;color:red" class="red"> </span>
</div>
<div class="layui-form-item">
<label class="layui-form-label" style="width: 100px" ><span class="red">*</span>邮箱:</label>
<div class="layui-input-inline" style="width: 120px">
<input type="text" name="user_email" id="user_email" value="" style="width: 120px" lay-verify="required|user_email" class="layui-input">
</div>
<span id="dbId_error"style="display:none;color:red" class="red"> </span>
</div>
<div class="layui-form-item">
<div class="layui-input-block">
<button class="layui-btn layui-btn-green" lay-submit lay-filter="addUserInfo">立即提交</button>
<button type="reset" id="commit" class="layui-btn layui-btn-primary">重置</button>
</div>
</div>
</form>
</div>
// 用户验证,要在对应属性中使用lay-verify属性
form.verify({
userName : [/^[a-zA-Z]{1}([a-zA-Z0-9_@.]){5,29}$/,
'用户名为字母、数字和下划线组成的6-30个字符,且以字母开头'],
user_pass : [
/^([a-zA-Z0-9]|[._]|[`~!@#$%^&*\(\)\-+\{\}\[\]\\|;:'",.\/<>?]){6,15}$/,
'密码为英文字母、数字和特殊字符(不含空格)组成的6-15个字符'],
confirm_user_pass : [
/^([a-zA-Z0-9]|[._]|[`~!@#$%^&*\(\)\-+\{\}\[\]\\|;:'",.\/<>?]){6,15}$/,
'密码为英文字母、数字和特殊字符(不含空格)组成的6-15个字符'],
user_email : [
/^[a-z0-9._%-]+@([a-z0-9-]+\.)+[a-z]{2,4}$|^1[3|4|5|7|8]\d{9}$/,
'邮箱格式不对']
})
// 提交新添加用户信息
form.on('submit(addUserInfo)', function(data) {
var user_name = $("#user_name").val().trim()
var user_type = $("#user_type").val().trim()
var user_pass = $("#user_pass").val().trim()
var confirm_user_pass = $("#confirm_user_pass").val().trim()
var user_email = $("#user_email").val().trim()
// 提交字段信息
jQuery.ajax({
type : 'POST',
url : ctx + '/checkNewUser.do',
dataType : 'json',
data : {
username : user_name
},
success : function(data) {
if (data) {
if (data.status == "success") {
saveUser(user_name, user_type,
user_pass, user_email)
//location.reload()
} else {
layer.alert("用户名已存在!")
}
}
},
error : function() {
}
})
return false
})