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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM