layui踩坑知识点大全(持续更新)

一、监听layui日期时间变化

layui.use(['table'], function() {
    
    
	var table = layui.table;
	laydate = layui.laydate,
	laydate.render({
    
    
	    elem: '#date1',
	    type: 'datetime',
	    range: '至',
	    done: function(value, date){
    
     //监听日期被切换
			//触发的函数
	        liuhais();
	    }
	});
});

二、去除layui表头右边的功能键

.layui-table-tool-self {
    
    
    display: none;
}  

在这里插入图片描述

三、删除前的提示

加粗样式

layer.confirm('确定要删除吗', function(){
    
    
    $.ajax({
    
    
        url: "{:url('del')}",
        type: 'post',
        data:{
    
    
            id:id
        },
        success:function (data) {
    
    
            if (data.code==200){
    
    
                layer.msg('删除成功');
                window.location.reload();
            }else{
    
    
                layer.msg('删除失败');
            }
        },
        error:function () {
    
    
            layer.msg('请求失败');
        }
    })
});

四、增加表格的滚动条宽度

在这里插入图片描述

<style>
    .layui-table-tool{
     
     
        display: none;
    }
    ::-webkit-scrollbar {
     
     
        width: 20px;
        height: 20px;
    }
</style>

五、全选删除

在这里插入图片描述

现在js中给表格定义id

table.render({
    
    
    id:"tables",
    elem: '#dataTable'
    ,url: '{:url()}' //数据接口
    ,page: true //开启分页
    ,skin: 'row'
    ,even: true
    ,limits: [100,200,300]
    ,limit: 100
    ,text: {
    
    
        none : '暂无相关数据'
    }
    ,toolbar: '#toolbar'
    ,defaultToolbar: ['filter']
    ,cols: [[ //表头
        {
    
    type:'checkbox'}
        ,{
    
    field:'zizeng', title: '序号',templet:'#zizeng'}
        ,{
    
    field: 'doctor_id', title: '医生'}
        ,{
    
    field: 'dl_id', title: '科室'}
        ,{
    
    field: 'sitting_time',width:200, title: '时间'}
        ,{
    
    field: 'type', title: '号别'}
        ,{
    
    field: 'visiting_number', title: '号源总数'}
        ,{
    
    field: 'booking_method', title: '预约方式'}
        ,{
    
    title: '操作', align:"center", templet: '#buttonTpl'}
    ]],
    done: function() {
    
    
        layui.global.addTableTool();
    }

定义一个方法,触发这个事件:

function deleteall() {
    
    
    var table = layui.table;
    //将页面全部复选框选中的值拼接到一个数组中
    var checkStatus = table.checkStatus("tables");
    var data = checkStatus.data;
    var res_arr = new Array();

    $.each(data, function(key, val) {
    
    
        res_arr.push(val.id);
    });
    console.log(res_arr);
    return false;
}

此时,res_arr这个值就是复选框选中的ID值,有了这些id,对此相应操作即可。

六、Layui通过判断php变量实现按钮是否隐藏

实现效果
在这里插入图片描述

实现过程

通过{ {d.id}}能够把每个数据的id都输入出来:
在这里插入图片描述
但是在和php模板标签一起使用的话就会报错:
在这里插入图片描述
最后换了这种写法就可以实现:

<script type="text/html" id="barDemo">
    {
     
     {
     
     #  if(d.is_index=='未启用'){
     
      }}
    <button class="layui-btn layui-btn-xs layui-btn-normal" hisi-data="{width: '40%', height: '50%'}" onclick="return enable({
     
     {d.id}},1)">启用</button>
    {
     
     {
     
     # }if(d.is_index=='启用'){
     
      }}
    <button class="layui-btn layui-btn-xs layui-btn-normal" hisi-data="{width: '40%', height: '50%'}" onclick="return enable({
     
     {d.id}},2)">不启用</button>
    {
     
     {
     
     #  }}}
    <a href="{:url('cancel')}?id={
     
     {d.id}}" class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del"><i class="layui-icon layui-icon-delete"></i></a>
</script>

七、选中一整行

在这里插入图片描述

控制选中样式:

.layui-table-click{
    
    background: #3c9;color: black;}
table.on('row(dataTable1)', function (obj) {
    
    
    tableRowData = obj.data;
    //方法一:选中后,无法取消
    obj.tr.addClass('layui-table-click');
    obj.tr.find('i[class="layui-anim layui-icon"]').trigger("click");
    //方法二:选中后,可以取消
    obj.tr.addClass('layui-table-click').removeClass('layui-table-click');
    obj.tr.find('i[class="layui-anim layui-icon"]').trigger("click");
})

八、监听表格按钮选择的整行数据变化

在这里插入图片描述
其中,dataTableelem: '#dataTable'

    <script type="text/html" title="操作按钮模板" id="buttonTpl">
        <button class="layui-btn layui-btn-xs" lay-event="appoint" value="{
    
    {d.timeslot}}">预约</button>
    </script>
    <scritp>
    	//预约
       table.on('tool(dataTable)', function(obj){
    
    
           console.log(obj);
           if (obj.event=="appoint"){
    
    
              
           }
       });
    </script>

在这里插入图片描述

九、关闭弹窗并刷新父页面

var index=parent.layer.getFrameIndex(window.name); //获取当前窗口的name
parent.layer.close(index);		//关闭窗口
window.parent.location.reload();

十、监听下拉框的变化

form表单中需要加class="layui-form",select中需要加lay-filter="all"

<form action="{:url('')}" id="hisi-table-search" class="layui-form">
            <div class="layui-form-item">
                <label class="layui-form-label">选择科室</label>
                <div class="layui-input-inline" id="cont">
                    <select name="department" id="department" lay-filter="all">
                        <option value="0">请选择</option>
                        {
    
    foreach $departInfo as $k=>$v}
                        <option value="{
      
      $v.section_id}">{
    
    $v.section_name}</option>
                        {
    
    /foreach}
                    </select>
                </div>
            </div>
</form>            
layui.use(['jquery','layer','table', 'form','laydate'],function(){
    
    
    var form = layui.form;
	form.on('select(all)',function(data){
    
    
		
	}
});

十一、日期选择框

<input type="text" id="elemDate" class="layui-input">
layui.use(['jquery','layer','table', 'form','laydate'],function(){
    
    
            var $ = layui.jquery;
            var table = layui.table;
            var form = layui.form;
            var laydate = layui.laydate;
            laydate.render({
    
    
                elem:"#elemDate"
            })
});

十二、获取多个相同name所选中的a标签的值

其中a标签是循环出来的,class的名字都是一样的:

<a class="_order" onclick="fun(this)" value="{$v.timeslot}"></a>
function fun(val){
    
    
   //获取时间段
   var timeslot = $(val).attr("value");  
}

如果是用button按钮,直接使用fun(this.value)就可以获取到点击的那个button按钮的值。

十三、弹出后并关闭子窗口

parent.layui.table.reload('dataTable2');
layer.alert(data.msg,function () {
    
    
    var index=parent.layer.getFrameIndex(window.name); //获取当前窗口的name
    parent.layer.close(index);		//关闭窗口
});

十四、自动展开搜索框

<div class="layui-form hisi-search hide">改为:

<div class="layui-form hisi-search show">

即可。

十五、在框架中去除公共样式部分

原先的:
在这里插入图片描述
改之后的:
在这里插入图片描述

十六、两个时间段的筛选

在这里插入图片描述html中:

<form action="{:url('order_index')}" method="get" id="hisi-table-search" class="layui-form">
	<div class="layui-form-item">
		<label class="layui-form-label">日期选择</label>
		<div class="layui-input-inline">
			<input type="text" name="date" id="date1" autocomplete="off" class="layui-input">
		</div>
	</div>
</form>

js中:

layui.use(['jquery','layer','table', 'form','laydate'], function() {
    
    
	var table = layui.table;
	var $ = layui.jquery;
	var form = layui.form;
	var laydate = layui.laydate;
	//排班日期时间选择器
	laydate.render({
    
    
		elem: '#date1',
		type: 'datetime',
		range: '至',
		done: function(value, date){
    
     //监听日期被切换
			fun(value);
		}
	});
});

十七、穿梭框

在这里插入图片描述

其中, i n s e p e c t I n f o 值 为 二 维 数 组 , 必 须 是 j s o n 后 的 并 包 含 t i t l e 和 v a l u e 下 标 。 insepectInfo值为二维数组,必须是json后的并包含title和value下标。 insepectInfojsontitlevalueinsepects的值为value所对应的ID号,格式为[1,2,3]

transfer.render({
    
    
    elem: '#test4'
    ,data: {
    
    :$insepectInfo}
    ,title: ['检查方式', '选中方式']
    ,id: 'insepects' //定义唯一索引
    ,showSearch: true
    ,value: {
    
    :$insepects}
});
<div class="layui-inline">
    <label class="layui-form-label">检查方式</label>
    <div class="layui-input-inline">
        <div id="test3" class="demo-transfer"></div>
    </div>
</div>

获取右侧选中的值,其中insepects为ransfer.render的唯一ID值:

var getData = transfer.getData('insepects');

猜你喜欢

转载自blog.csdn.net/qq_42249896/article/details/107742331
今日推荐