1. 程式人生 > >layer.open中select失效,表格中插入圖片,checkbox是否選中,檢視大圖

layer.open中select失效,表格中插入圖片,checkbox是否選中,檢視大圖

彈窗官網地址:http://layer.layui.com/

1.在使用layui時layer.open的彈窗使用十分方便,普通彈窗可以滿足普通需求,prompt可以滿足一個input框的需求,但如果有兩個輸入框或者有select時,就需要用到自定義彈窗了;

2.select失效,失效原因是.layui-layer-page .layui-layer-content{overflow: auto;},將其改為.layui-layer-page .layui-layer-content{overflow: visible;}同時在success函式中執行form.render('select');,這個可能是layui不希望在彈窗中使用select吧,相信以後會完善的;

3.表格中插入圖片

3.1效果

3.2說明

插入圖片有兩種方式:①通過HTML中迴圈渲染表格時插入img標籤;②在js中通過templet方式;

4.checkbox判斷是否選中

須在容器上新增lay-filter,然後再checkbox是使用

5.檢視大圖(//0-6的選擇,指定彈出圖片動畫型別,預設隨機(請注意,3.0之前的版本用shift引數))

6.程式碼部分:

<!DOCTYPE html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<meta name="renderer" content="webkit">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
		<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
		<title>黑名單管理</title>
		<link rel="stylesheet" href="../frame/layui/css/layui.css">
		<link rel="stylesheet" href="http://cdn.datatables.net/1.10.13/css/jquery.dataTables.min.css">
		<link rel="stylesheet" href="../frame/static/css/style.css">
		<link rel="icon" href="../frame/static/image/code.png">
		<style type="text/css">
			.lh38{
				line-height: 38px;
			}
			.bold{
				font-weight: bold;
			}
			.f20{
				font-size: 20px;
			}
			.mr20{
				margin-right: 20px;
			}
			.w182{
				width: 182px;
			}
			.mt20{
				margin-top: 20px;
			}
			.myself .layui-table-cell{
				white-space:normal;
				height: auto;
			}
			.myself .layui-form-label{
				padding-left: 0;
				text-align: left;
				width: auto;
			}
			.myself .layui-input-block{
				margin-left: 80px;
			}
			.myself .layui-layer-page .layui-layer-content{
				overflow: visible;
			}
		</style>
	</head>

	<body class="body myself">
		<div class="my-btn-box layui-row">
			<div class="fl lh38 bold f20">黑名單管理</div>
		</div>				
				
		<!-- 工具集 -->
		<div class="layui-row layui-form">
			<div class="fl mr20">
				<div class="layui-form">
					<span class="layui-form-label">資料來源:</span>
				    <div class="layui-input-block">
				      <select>
				        <option value="">APP</option>
				        <option value="0">觸屏</option>
				        <option value="1">Web</option>
				      </select>
				    </div>
			    </div>
			</div>
			
			<div class="fl mr20">
				<span class="layui-form-label">使用者:</span>
				<div class="layui-input-inline">
					<input type="text" placeholder="請輸入手機號或ID" class="layui-input">
				</div>
			</div>
			
			<button class="layui-btn mgl-20 fl">搜尋</button>
		</div>

		<!-- 表格 -->
		<div id="dateTable" lay-filter="myLayFilter"></div>
		
		<script type="text/javascript" src="../frame/layui/layui.js"></script>
		<script type="text/javascript" src="../js/index.js"></script>
		<script type="text/javascript">
			// layui方法
			layui.use(['table', 'form', 'layer', 'vip_table'], function() {

				// 操作物件
				var form = layui.form,
					table = layui.table,
					layer = layui.layer,
					vipTable = layui.vip_table,
					$ = layui.jquery;
				
				// 表格渲染
				var tableIns = table.render({
					elem: '#dateTable' //指定原始表格元素選擇器(推薦id選擇器)
						,
					height: vipTable.getFullHeight() //容器高度
						,
					cols: [
						[ 
						{checkbox: true, sort: true, fixed: true, space: true},
							{ field: 'id', title: '序號', width: 80 }, 
							{ field: 'auth_group_name', title: '使用者賬號', width: 120 }, 
							{ field: 'last_login_time', title: '使用者ID', width: 105 }, 
							{ field: 'last_login_ip', title: '封禁型別', width: 180 }, 
							{ field: 'create_time', title: '封禁時間', width: 180 }, 
							{ field: 'status', title: '剩餘時間', width: 90 }, 
							{ field: 'create_time', title: '頭像', width: 180 ,						
								templet:'<div><img class="layer-photos-demo" layer-src="//img-ads.csdn.net/2018/201812111201044213.png" src="//img-ads.csdn.net/2018/201812111201044213.png"/></div>'						
							},
							{ field: 'account', title: '操作人', width: 180 }, 
							{ title: '操作', width: 150, align: 'center', toolbar: '#barOption' } //這裡的toolbar值是模板元素的選擇器
						]
					],
					id: 'dataCheck',
					url: './../json/data_table.json',
					method: 'get',
					page: true,
					limits: [10,20,30,40,50,60,70,80,90],
					limit: 10 //預設採用30
						,
					loading: false,
					done: function(res, curr, count) {
						//如果是非同步請求資料方式,res即為你介面返回的資訊。
						//如果是直接賦值的方式,res即為:{data: [], count: 99} data為當前頁資料、count為資料總長度
						console.log(res);

						//得到當前頁碼
						console.log(curr);

						//得到資料總量
						console.log(count);
						
						//檢視大圖
						$("body").on("click",".layer-photos-demo",function(e){
						    layer.photos({
						        photos: { "data": [{"src": e.target.src},{"src": e.target.src},{"src": e.target.src}] }
						        ,anim: 3
						    });
						});
					}
				});
				
				// 獲取選中行
				table.on('checkbox(myLayFilter)', function(obj) {
					console.log("obj",obj)
					layer.msg('123');
					console.log(obj.checked); //當前是否選中狀態
					console.log(obj.data); //選中行的相關資料
					console.log(obj.type); //如果觸發的是全選,則為:all,如果觸發的是單選,則為:one
				});

				//監聽行工具事件
				table.on('tool(test)', function(obj) { //注:tool 是工具條事件名,test 是 table 原始容器的屬性 lay-filter="對應的值"
					var data = obj.data //獲得當前行資料
						,layEvent = obj.event; //獲得 lay-event 對應的值
					if(layEvent === 'addTime') {
						
						
						//示範一個公告層
						layer.open({
							type: 1,
							title: "增加封禁時間" //不顯示標題欄
								,
							area: '500px;',
							shade: 0.8,
							id: 'addTime' //設定一個id,防止重複彈出
								,
							resize: false,
							btn: ['確認', '取消'],
							btnAlign: 'r',
							content: '<div style="padding: 10px; background-color: #fff; color: #000; font-weight: 300;">'+
								'<div>此操作將延長使用者的封禁時間,請選擇增加時長:</div>'+
								
								'<div style="width: 350px;margin-top:20px">'+
									'<div class="layui-form">'+
									'<span class="layui-form-label">方式:</span>'+
										'<div class="layui-input-block">'+
											'<select>'+
												'<option value="">全部</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
											'</select>'+
										'</div>'+
									'</div>'+
								'</div>'+
								'<div style="width: 350px;margin-top:20px">'+
									'<div class="layui-form">'+
									'<span class="layui-form-label">方式:</span>'+
										'<div class="layui-input-block">'+
											'<select>'+
												'<option value="">全部</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
												'<option value="0">未稽核</option>'+
												'<option value="1">已通過</option>'+
											'</select>'+
										'</div>'+
									'</div>'+
								'</div>'+
							
							'</div>',
							success: function(layero) {
								form.render('select');
								var btn = layero.find('.layui-layer-btn');
								btn.find('.layui-layer-btn0').on("click",function(){
									console.log("確認")
								});
							}
						});
						
					}else if(layEvent ==='Unsealing') {
						layer.open({
							type: 1,
							title: "解除封禁" //不顯示標題欄
								,
							area: '300px;',
							shade: 0.8,
							id: 'Unsealing' //設定一個id,防止重複彈出
								,
							resize: false,
							btn: ['確認', '取消'],
							btnAlign: 'r',
							content: '<div style="padding: 10px; background-color: #fff; color: #000; font-weight: 300;">'+
								'<div>你正在進行解除封禁操作,是否繼續?</div>'+								
							'</div>',
							success: function(layero) {
								var btn = layero.find('.layui-layer-btn');
								btn.find('.layui-layer-btn0').on("click",function(){
									console.log("確認")
								});
							}
						});
					}
				});

			});
		</script>
		<!-- 表格操作按鈕集 -->
		<script type="text/html" id="barOption">
		    <a class="layui-btn layui-btn-mini" lay-event="addTime">增加時間</a>
		    <a class="layui-btn layui-btn-mini layui-btn-danger" lay-event="Unsealing">解封</a>
		</script>		
	</body>
</html>

7.推薦:

①官網:https://www.layui.com/demo/layer.html

②部落格:https://blog.csdn.net/QYHuiiQ/article/details/82079361

③部落格:https://www.cnblogs.com/thirteen-zxh/p/9529938.html

④部落格:https://blog.csdn.net/lmxqh/article/details/79232168

⑤社群:https://fly.layui.com/jie/14995/