前言
最近的一个项目使用到了layui,然后就想总结一下使用过的知识吧。
一.复选框
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">是否单身</label>
<div class="layui-input-block" style="margin-left: 200px;width: 55%;">
<input type="radio" name="single" value="是" title="是">
<input type="radio" name="single" value="否" title="否" checked>
</div>
</div>
取值:
$('input[name="single"]:checked').val()
点击事件 :
layui.form.on('radio(radioName)', function(data){
if( data.value == '是'){
......
}else{
......
}
});
二.select框
<div class="layui-form-item">
<label class="layui-form-label" style="width: auto;">文字内容</label>
<div class="layui-input-block" style="margin-left: 200px;width: 55%;">
<select class="form-control className" id="id"
lay-filter="此处的名称就是下面的点击事件的名称"
data-actions-box="true" data-live-search="true"
data-live-search-placeholder="请选择xxx" >
<option value="" selected>请选择xxx</option>
</select>
</div>
</div>
点击事件:
layui.use("form", function () {
$ = layui.jquery;
form = layui.form;
form.on('select(点击事件的名称)', function(data){
$('.className').empty();//清空select,不然每点一次都循环添加一遍数据越来越多
进行具体的操作
});
});
PS:此处若需要知道select框选中的值是啥,应该用data.value。
将字段设为未选中状态:
$("#id名称").removeAttr("disabled");
form.render("select");
三.异步请求(Get)
此处结合上面的select框一起说明,
// 页面加载时就会发送异步请求
$(document).ready(function() {
// 职业资格
$.get('url地址','',function(res){
for (var i=0;i<res.length;i++) {
$('.id名称').append('<optionid="'+i+'">'+res[i].name+'</option>')
}
renderForm();
})
});
PS:此处的url地址可以弄成一个配置文件,然后直接引入。
渲染函数:
function renderForm(){
layui.use('form',function(){
var form = layui.form;
form.render();
});
};
四.多分录
<div class="layui-form" lay-filter="freshform">
<table class="layui-table" lay-filter="test">
<tbody class="addlists">
......填写需要变成多分录的样式......
</tbody>
</table>
</div>
<script src="layui/layui.js"></script>
<script src="js/jquery-2.0.0.js"></script>
<script type="text/javascript">
$(function () {
let form = layui.form,
laydate = layui.laydate,
laypage = layui.laypage,
layer = layui.layer,
table = layui.table;//非模块化加载相应的依赖
let i=1;
$('.layui-icon-addition').click(function () {
i++;
addstrs1(i);//增加一条内容函数
form.render();//每次点击添加按钮就会重新渲染一次
});
//下面整个是弹出询问框是否删除,
$('body').on("click",".layui-icon-subtraction",function () {
var pre = $(this);//这里获取点击当前行,就是要删除此行把此行的属性交给变量pre
layer.confirm('确定要删除么?',{
btn:['确定','取消']
},function () {
//为什么这个里不能直接用this表示当前行,因为作用域不一样,通过变量传递的方式获取当前行
$(pre).parent().parent().remove();//这里是移除当前删除行的内容
layer.closeAll('dialog');//这里是点击确定删除后关闭整个弹出层
})
});
//产生随机数函数
function getRandomNum() {
return parseInt(Math.random()*50);
}
//动态添加表单的函数
function addstrs1(i) {
let iNums = getRandomNum();//获取随机数
let strs1;
strs1 = '此处填写要变成多分录的内容,注意要在第一个div标签里面加上value="'+i+'"';
$('.addlists').append(strs1);
//重新渲染
laydate.render({
elem: '#getTime'+iNums //获取时间
,trigger: 'click' //采用click弹出
});
})
</script>
强调 :这个方法是我之前在网上看到的一遍博客中学到的。
五.设置select中的option为选中状态
// 当前的select的id
$('#id').val('value值');
// 更新全部,不渲染一遍的话不会看到效果,虽然实际上已经赋值了
layui.form.render();
六.将控件设为不可编辑(禁用状态)
$("#id名称").attr("disabled", false);
layui.form.render('id名称');
七.上传照片
HTML5:
<div class="layui-upload-drag required" id="ongImg">
<i class="layui-icon"></i>
<p>点击上传证件照</p>
</div>
JS:
// 照片上传功能
layui.use('upload', function() {
var upload = layui.upload;
upload.render({
elem: '#ongImg',
url: 'submit',
auto: false, //是否自动上传
accept: 'images', //指定允许上传的文件类型
bindAction: '#submit', //指向一个按钮触发上传
//选择文件后的回调函数
choose: function(obj) {
//将每次选择的文件追加到文件队列
var files = obj.pushFile();
//预读本地文件,如果是多文件,则会遍历。
obj.preview(function(index, file, result) {
//console.log(index); //得到文件索引
//console.log(file); //得到文件对象
//console.log(result); //得到文件base64编码,比如图片
window["imgNumber"] = result;
//图片插入到选择框中,
$("#ongImg").html("<img src = '" + result +
"' height='150px;' width='130px;' />");
});
},
//上传完成后回调,res为服务器端返回的数据
done: function(res) {
//关闭loading
layer.close(index);
}
});
});