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="width: 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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
xm-select 是一个基于 layui 的下拉框组件,可以实现多选、搜索、异步加载等功能。下面是一个简单的示例代码: ```html <div class="layui-form-item"> <label class="layui-form-label">多选下拉框</label> <div class="layui-input-block"> <select xm-select="demo2" xm-select-max="3" xm-select-search xm-select-skin="default" name="city[]" lay-verify="required" multiple> <option value="0">北京</option> <option value="1">上海</option> <option value="2">广州</option> <option value="3">深圳</option> <option value="4">杭州</option> <option value="5">南京</option> <option value="6">武汉</option> <option value="7">成都</option> </select> </div> </div> ``` 其中,`xm-select` 属性指定了下拉框的 ID,`xm-select-max` 属性指定了最多可选项数,`xm-select-search` 属性表示开启搜索功能,`xm-select-skin` 属性指定了皮肤样式,`multiple` 属性表示开启多选。 在 JavaScript 中,我们需要使用 `xmSelect` 函数初始化下拉框,并设置各种配置项: ```javascript layui.use(['xmSelect'], function(){ var xmSelect = layui.xmSelect; var demo2 = xmSelect.render({ el: '#demo2', name: 'city', layVerify: 'required', filterable: true, searchPlaceholder: '请选择城市', tips: '最多选择3个城市', max: 3, data: [{ name: '北京', value: 0 }, { name: '上海', value: 1 }, { name: '广州', value: 2 }, { name: '深圳', value: 3 }, { name: '杭州', value: 4 }, { name: '南京', value: 5 }, { name: '武汉', value: 6 }, { name: '成都', value: 7 }] }); }); ``` 其中,`el` 属性指定了下拉框的 ID,`name` 属性指定了提交表单时的参数名,`layVerify` 属性指定了表单验证规则,`filterable` 属性表示开启搜索功能,`searchPlaceholder` 属性指定了搜索框的提示文本,`tips` 属性指定了超出可选项数时的提示文本,`max` 属性指定了最多可选项数,`data` 属性指定了下拉框的选项数据。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值