zoukankan      html  css  js  c++  java
  • Layui使用总结及多选方案Xm-select

    一,Layui使用

    官网参考:Layui官网
    后台示例:LayUI后台管理与综合示例

    1.基础说明

    加载所需模块:layui 的内置模块并非默认就加载的,他必须在你执行该方法后才会加载

    layui.use(['form', 'laydate'], function(){
      var form= layui.form
      ,laydate= layui.laydate;
      
      //do something
    });
    • 本地存储:对 localStorage 和 sessionStorage 的友好封装,可更方便地管理本地数据。
    • localStorage 持久化存储:layui.data(table, settings),数据会永久存在,除非物理删除。
    • sessionStorage 会话性存储:layui.sessionData(table, settings),页面关闭后即失效。注:layui 2.2.5 新增
    //本地存储存入:参数1.调用的值 2.所要存入的数据
    //【增】:向 remind_obj 表插入一个 字符串 字段,如果该表不存在,则自动建立。
    var obj = {
    		workId: workId,//工作类型
    		workName: $('#workId').attr('data-name'),
    		typeId: typeId,//2级类型
    		taskTypeName: $('#typeId').attr('data-name'),//2级类型
    };
    localStorage.setItem("remind_obj", JSON.stringify(obj)); 
    
    
    //【查】:向 remind_obj 表读取全部的数据
    var localTest = localStorage.getItem("remind_obj");
    //!$.isEmptyObject()如果不是空对象”{}“
    if (localTest!=null && !$.isEmptyObject(localTest)) {
    	var obj = JSON.parse(localTest);
    	//提醒类型
    	$('#workId').attr( 'data-val', obj.workId );
    	$('#workId').val( obj.workName );
    	$('#typeId').attr( 'data-val', obj.typeId );
    	$('#typeId').val( obj.taskTypeName );
    }
    

      

    2.laydate

     //常规用法
      laydate.render({
        elem: '#dayDate'
        ,trigger: 'click'
      });
      //同时绑定多个
      lay('.test-item').each(function(){
        laydate.render({
          elem: this
          ,trigger: 'click'
          ,type: 'time'
        });
      });
    

      

    3.Layui上传大文件游览器巨慢或者崩溃问题

    参考:Layui上传大文件游览器巨慢或者崩溃问题

    4.扩展一个模块并使用

    /**
      mysample.js里扩展一个sample2模块 
    **/      
     
    layui.define(function(exports){ 
      //todoing
      
      //输出sample2接口
      exports('sample2', {});
    });    
    
    // 在homepage2.html里使用sample2模块
      <script>
      layui.config({
        base: '../../layuiadmin/' //你存模块的目录,默认是module下
      }).extend({//设定扩展模块所在的目录
        index: 'lib/index' //相对于上述 base目录,同理以下相对于本目录
        ,sample2: '../../views/home/mysample' //加载mysample.js
      }).use(['index', 'sample2']); //使用sample2模块
      </script>
    

      

    图例:
    在这里插入图片描述

    二,Xm-select

    参考:Xm-select官网
    始于 layui 的一个多选解决方案。前身 formSelects, 由于渲染速度慢, 代码冗余, 被放弃了

    1.普通多选形式

    在这里插入图片描述

    <div id="demo1" style=" 190px;"></div>
    //多选下拉框渲染对象
    var dataTypes = null;
    
    dataTypes = xmSelect.render({
    	el: '#dataTypes',
    	language: 'zn',
    	//工具栏
    	toolbar: {
    		show: true
    	},
    	filterable: true,//过滤搜索
    	paging: true,//分页
    	pageSize: 10,//每页条数
    	height: '500px',
    	//autoRow: true,//自动换行
    	data: arr
    })
    
    //获取value字符串逗号分割
    var valueStr = dataTypes.getValue('valueStr');
    //给多选赋值(value方式)
    dataTypes.setValue( [ 1,2 ] );
    
    //搜索input框失去焦点模拟:选择完毕关闭监听
    $dataTypes = $('#dataTypes')
    $dataTypes.on('blur', '.xm-search-input', function() {
    	//hasClass() 方法检查被选元素是否包含指定的 class。
    	setTimeout(() => {
    		if($dataTypes.find('.xm-body').hasClass('dis')) {
    			var valueStr = dataTypes.getValue('valueStr');
    			console.log(valueStr);
    		}
    	}, 300);
    });
    

     

    1.1 搜索input框失去焦点事件:模拟选择完毕关闭监听

    //搜索input框失去焦点模拟:选择完毕关闭监听
    $dataTypes = $('#xmDataTypes')
    $dataTypes.on('blur', '.xm-search-input', function() {
    	//hasClass() 方法检查被选元素是否包含指定的 class
    	setTimeout(() => {
    		if($dataTypes.find('.xm-body').hasClass('dis')) {
    			//todo
    		}
    	}, 300);
    });
    

      

    2.拓展下拉树

    在这里插入图片描述
    赋值与取值与普通多选一致

    //多选下拉框渲染对象
    var run_class_users = null;
    
    //加载下拉框数据: 执行用户
    $.get(ajaxPath+"action/share/getUserToSelect"
    		,function(data){
    	
    	run_class_users = xmSelect.render({
    		el: '#run_class_users', 
    		toolbar: {
    			show: true,//是否展示工具条
    		},
    		direction: 'down',
    		autoRow: true,
    		filterable: true,
    		tree: {
    			//是否显示树状结构
    			show: true,
    			//是否展示三角图标
    			showFolderIcon: true,
    			//是否显示虚线
    			showLine: false,
    			//间距
    			indent: 20,
    			//默认展开节点的数组,默认展开新东盛8006
    			expandedKeys: [8006],
    			//是否严格遵守父子模式
    			strict: true,
    		},
    		filterable: true,
    		height: 'auto',
    		data(){
    			return data.treeDate//返回数据遵循官网指定结构
    		}
    	})	
    });
    

      原文:https://blog.csdn.net/qq_42687916/article/details/104011488

  • 相关阅读:
    最小圆覆盖
    BZOJ3572 [Hnoi2014]世界树 【虚树 + 树形dp】
    一些组合数学
    BZOJ3611 [Heoi2014]大工程 【虚树】
    线段树合并
    BZOJ4446 [Scoi2015]小凸玩密室 【树形Dp】
    生成函数小记
    BZOJ2337 [HNOI2011]XOR和路径 【概率dp + 高斯消元】
    连续数字异或和
    POJ2976:Dropping tests——题解
  • 原文地址:https://www.cnblogs.com/T8888/p/13497948.html
Copyright © 2011-2022 走看看