Layui弹框中数据表格中可双击选择一条数据的实现


Posted in Javascript onMay 06, 2020

Layui提供的功能如下(预览)

可自行查看:layui官网此模块的链接
着急看双击选中 直接看标黄色部分

Layui弹框中数据表格中可双击选择一条数据的实现

假设这是个弹窗里的表格和数据点击圆圈,圆圈变绿则为选中,选中后点击上方查看数据按钮(实际中是确认按钮,实际中点击确认按钮后会关闭弹窗并把json串带到原本页面中)

Layui提供的代码如下(查看代码)

<body>
<!-- 表格空架子 -->
<table class="layui-hide" id="test" lay-filter="test"></table>
<!-- 确认(查看数据按钮) -->
<script type="text/html" id="toolbarDemo">
 <div class="layui-btn-container">
  <button class="layui-btn layui-btn-sm" lay-event="getCheckData">获取选中行数据</button>
 </div>
</script> 
<script src="//res.layui.com/layui/dist/layui.js" charset="utf-8"></script>
<!-- 注意:如果你直接复制所有代码到本地,上述js路径需要改成你本地的 --> 
<script>
	layui.use('table', function(){
	 var table = layui.table;
	 table.render({
	  elem: '#test'
	  ,url:'/demo/table/user/'
	  ,toolbar: '#toolbarDemo'
	  ,cols: [[
	   {type:'radio'}
	   ,{field:'id', width:80, title: 'ID', sort: true}
	   ,{field:'username', width:80, title: '用户名'}
	   ,{field:'sex', width:80, title: '性别', sort: true}
	   ,{field:'city', width:80, title: '城市'}
	   ,{field:'sign', title: '签名', minWidth: 100}
	   ,{field:'experience', width:80, title: '积分', sort: true}
	   ,{field:'score', width:80, title: '评分', sort: true}
	   ,{field:'classify', width:80, title: '职业'}
	   ,{field:'wealth', width:135, title: '财富', sort: true}
	  ]]
	  ,page: true
	 });
	 
	 //头工具栏事件
	 table.on('toolbar(test)', function(obj){
	  var checkStatus = table.checkStatus(obj.config.id); //获取选中行状态
	  switch(obj.event){
	   case 'getCheckData':
	    var data = checkStatus.data; //获取选中行数据
	    layer.alert(JSON.stringify(data));
	   break;
	  };
	 });
	});
</script>
</body>

实际需求实例

Layui弹框中数据表格中可双击选择一条数据的实现

  • 点击 【选择】 按钮,出现弹框
  • 弹框里有数据表格
  • 点击圆圈为选中当前条数据
  • 点击弹框中【确认】把选中条数据带到主页面

实际代码实例

主页面代码(底,都为自动带出的输入框)

静态部分

<div>
	<div>
		<span>客户姓名:</span>
			<form:input path="customerName" readonly="true"/>
		<span onclick="onclick()" title="选择">
			<input id="selectCustomer"	class="btn" type="button" value="选择" /></span>
	</div>
	<div>
		<span>客户性别:</span>
		<form:input path="customerSex" readonly="true"/>
	</div>
	<div>
		<span>客户年龄:</span>
		<form:input path="customerYears" readonly="true"/>
	</div>
</div>

【选择】按钮的弹窗事件

function onclick(){
 var width = window.screen.availWidth*0.8;
 var height = window.screen.availHeight*0.65;
 var iTop=(window.screen.availHeight-30-height)/2;
 var iLeft=(window.screen.availWidth-30-width)/2;
 var url="${xxx}/vvvv/rrrrr/getCustomerList"; //后端代码就不介绍了
 window.open(url,'客户信息','height='+height+',width='+width+',top='+iTop+',left='+iLeft+',
 toolbar=no,menubar=no,scrollbars=yes, resizable=yes,location=no, status=no')
}

弹窗页面代码

弹窗页面中?静态部分

<table id="contentTable" class="layui-table">
 	<thead>
 		<tr>
 			<th></th>
 			<th>客户姓名</th>
 			<th>客户性别</th>
 			<th>客户年龄</th>
 			<th>...</th>
 		</tr>
 	</thead>
 	<tbody>
 		<c:forEach items="${page.list}" var="customerMain">
 			<tr>
 				<td align="center"><input name="customerId" type="radio" value="${customerMain.id}"></td>
 				<td>${customerMain.customerName}</td>
 				<td>${customerMain.customerSex}</td>
 				<td>${customerMain.customerYears}</td>
 				<td class="hide" >${customerMain.....}</td>
 			</tr>
 		</c:forEach>
 	</tbody>
</table>

弹框页面上-- == 单击单选圆圈的事件+双击行选中 ==

$(document).ready(function() {
 	//双击行 即可执行函数(行数据被选中:radio为checked)
  	$("table tbody tr").dblclick(function(i) {
  		$(this).find("input[type='radio']").prop("checked", true)
  	});
  	//圆圈改变状态即可执行函数
  	$("#contentTable tbody tr input").change(function () {
    var ischecked = $(this).prop("checked");
    var index=$(this).parent().parent().index()
    var tr=$("#contentTable tbody tr")
    if(ischecked){
      for(var i=0;i<tr.length;i++){
        if(i!=index){
          $("#contentTable tbody tr:eq("+i+") input").prop("checked",!ischecked);
        }
      }
    }
  })
});

弹框页面上?选择好数据后带回主页面的函数

<script>
	//给弹框中【确认】按钮绑定事件
	function toSubmit(){
		//此方法在下方
		var data=getRowData();
		if(data==null){
			layer.alert("请先选择一位客户")
			return ;
		}
		window.opener.getCustomerData(data);//调用主页面上的方法,给主页面赋值,最下方有具体方法过程
		window.close();//关闭弹窗
	}
	//给弹框中【返回】按钮绑定事件
	function closed(){
		window.close();
	}

	//获取行对象
	function getRowData(){
		var row = null;
		//锁定行(循环遍历找到被选中的行)
		$("table tbody tr").each(function(){
			var radio = $(this).find("td").eq(0).find("input[type='radio']:checked").val();
			if(radio){
				row = $(this) ;
			}
		});
		//如果此行有数据则拼接
		if(row){
			var customerId = row.find("td").eq(0).find("input[type='radio']:checked").val();
			var customerName = row.find("td").eq(1).text();
			var customerSex = row.find("td").eq(2).text();
			var customerYears = row.find("td").eq(3).text();
			//拼接模板 $.trim() jQuery.trim()函数用于去除字符串两端的空白字符。该函数可以去除字符串开始和末尾两端的空白字符(直到遇到第一个非空白字符串为止)。它会清除包括换行符、空格、制表符等常见的空白字符。
			var data = "[{\"customerId\":\""+$.trim(customerId)
					  +"\",\"customerName\":\""+$.trim(customerName)
				    +"\",\"customerSex\":\""+$.trim(customerSex)
				    +"\",\"customerYears\":\""+$.trim(customerYears)
					  +"\"}]";
		}
		return data ;
	}
	
</script>

调用主页面上的给主页面赋值的方法

<script>
	function getCustomerData(data){
		var json = JSON.parse(data);
		$("#customerId").val(json[0].customerId);
	  $("#customerName").val(json[0].customerName);
	  $("#customerSex").val(json[0].customerSex);
	  $("#customerYears").val(json[0].customerYears);
	  ....
	}
</script>

到此这篇关于Layui弹框中数据表格中可双击选择一条数据的实现的文章就介绍到这了,更多相关Layui弹框双击数据内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
javascript 限制输入脚本大全
Nov 03 Javascript
js对象的构造和继承实现代码
Dec 05 Javascript
jquery获取table中的某行全部td的内容方法
Mar 08 Javascript
javascript限制用户只能输汉字中文的方法
Nov 20 Javascript
JavaScript中判断变量是数组、函数或是对象类型的方法
Feb 25 Javascript
js实现宇宙星空背景效果的方法
Mar 03 Javascript
JQuery EasyUI学习教程之datagrid 添加、修改、删除操作
Jul 09 Javascript
基于JavaScript实现跳转提示页面
Sep 24 Javascript
js实现炫酷的左右轮播图
Jan 18 Javascript
如何为vue的项目添加单元测试
Dec 19 Javascript
详解vue 在移动端体验上的优化解决方案
May 20 Javascript
Node.js API详解之 timer模块用法实例分析
May 07 Javascript
Vue SSR 即时编译技术的实现
May 06 #Javascript
深入webpack打包原理及loader和plugin的实现
May 06 #Javascript
将Vue组件库更换为按需加载的方法步骤
May 06 #Javascript
让IDE识别webpack的别名alias的实现方法
May 06 #Javascript
JS 设计模式之:工厂模式定义与实现方法浅析
May 06 #Javascript
JS 设计模式之:单例模式定义与实现方法浅析
May 06 #Javascript
基于vue3.0.1beta搭建仿京东的电商H5项目
May 06 #Javascript
You might like
IIS6.0中配置php服务全过程解析
2013/08/07 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
Javascript &amp; DHTML 实例编程(教程)DOM基础和基本API
2007/06/02 Javascript
JavaScript页面刷新与弹出窗口问题的解决方法
2010/03/02 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
javascript动态加载三
2012/08/22 Javascript
防止按钮在短时间内被多次点击的方法
2014/03/10 Javascript
JavaScript类继承及实例化的方法
2015/07/25 Javascript
基于jQuery实现鼠标点击导航菜单水波动画效果附源码下载
2016/01/06 Javascript
JS实现星星评分功能实例代码(两种方法)
2016/06/09 Javascript
JavaScript作用域示例详解
2016/07/07 Javascript
基于Vuejs实现购物车功能
2016/08/02 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
JavaScript获取中英文混合字符串长度的方法示例
2017/02/04 Javascript
Vue自定义事件(详解)
2017/08/19 Javascript
JavaScript树的深度优先遍历和广度优先遍历算法示例
2018/07/30 Javascript
SSM+layUI 根据登录信息显示不同的页面方法
2019/09/20 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
通过实例解析JavaScript常用排序算法
2020/09/02 Javascript
vue keep-alive实现多组件嵌套中个别组件存活不销毁的操作
2020/10/30 Javascript
微信小程序自定义modal弹窗组件的方法详解
2020/12/20 Javascript
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python基于plotly模块实现的画图操作示例
2019/01/23 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Python中正则表达式的用法总结
2019/02/22 Python
python pickle存储、读取大数据量列表、字典数据的方法
2019/07/07 Python
Python实现密码薄文件读写操作
2019/12/16 Python
python selenium操作cookie的实现
2020/03/18 Python
Python基于BeautifulSoup爬取京东商品信息
2020/06/01 Python
python实现简单的tcp 文件下载
2020/09/16 Python
世界各地的当地人的食物体验:Eatwith
2019/07/26 全球购物
五水共治一句话承诺
2014/05/30 职场文书
美术第二课堂活动总结
2014/07/08 职场文书
2015年党员公开承诺书范文
2015/01/22 职场文书
教你使用Pandas直接核算Excel中快递费用
2021/05/12 Python
JavaScript前端面试组合函数
2022/06/21 Javascript