Layui layer.open 在 content 中嵌入数据表格并返回值的方法

作者:开源拾贝

时间:2026-10-23

浏览:309

本文介绍如何在 Layui 中使用 layer.open 打开包含数据表格的子页面,并通过 iframe 通信机制获取用户选中的表格行数据。核心步骤包括在父页面定义触发按钮、调用 layer.open 配置 content 指向子页面,并在 yes 回调中通过 window["layui-layer-iframe" + index].callbackdata() 获取子页面暴露的方法返回值,从而实现跨页面数据交互。

文章目录

Layui layer.open 打开子页面数据表格并返回值的方法

在使用 Layui 开发的页面中,常遇到一种需求:通过 layer.open 打开一个包含数据表格的新窗口,并在该窗口中选中某一行数据,获取其值以便在父页面进行后续操作。

Layui layer.open 打开子页面数据表格并返回值的方法

例如,简单的场景是选中某行后,获取并显示该数据的 ID 字段。

首先,需要在父页面(原始页面)中定义一个工具条按钮。


<button class="layui-btn" data-type="simulatePack">模拟</button>

接着,实现该工具条按钮的点击事件,用于触发打开新窗口。


simulatePack: function(){ //模拟操作
    var checkStatus = table.checkStatus('box')
     ,data = checkStatus.data;
    layer.open({
     type:2
     ,area: ['800px', '600px']
     ,title:'请选择'
     ,content: 'container.html'
     ,maxmin: true
     ,btn: ['确认选择', '关闭'] 
     ,yes: function(index, layero){
      var row = window["layui-layer-iframe" + index].callbackdata();
      layer.alert("get:"+row);
      // var row = $(layero).find("layui-layer-iframe")[0].contentWindow.callbackdata();
      //可以使用ajax请求对数据进行进一步处理
      layer.close(index);
     },btn2: function(index, layero){
      layer.close(index);
     }
    })
   },

这里,变量 row 代表从新打开的子窗口中返回的数据值。

在子窗口中,需要定义一个名为 conId 的变量作为返回值,具体实现如下。


<!DOCTYPE html>
<html>
<head>
 <meta charset="utf-8">
 <title>layui</title>
 <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">
 <link rel="stylesheet" href="/layuiadmin/layui/css/layui.css" rel="external nofollow" media="all">
</head>
<body>
<table class="layui-hide" id="container" lay-filter="container"></table>
<script src="/layuiadmin/layui/layui.js" charset="utf-8"></script>
<script>
 var conId;
 layui.use('table', function(){
  var table = layui.table;
 
  table.render({
   elem: '#container'
   ,url:'/container/listAll'
   ,page:true
   ,cols: [[
    {type:'radio'}
    ,{field:'id', title: 'ID'}
    ,{field:'length', title: '长度'}
    ,{field:'width', title: '宽度'}
    ,{field:'height', title: '高度'}
    ,{field:'weightLimit', title: '承重限制'}
    ,{field:'volumn', title: '体积'}
    ,{field:'height', title: '高度'}
   ]]
  });
 
  //监听行单击事件(单击事件为:rowDouble)
  table.on('row(container)',function(obj){
   var data = obj.data;
   conId = data.id;
   //标注选中样式
   obj.tr.addClass('layui-table-click').siblings().removeClass('layui-table-click');
  });
 });
 var callbackdata = function () {
  return conId;
 }
</script>
 
</body>
</html>

通过上述配置,即可实现从 content 指定的子页面中获取并返回数据的功能。

以上介绍了 Layui 使用 layer.open 在 content 中打开数据表格并返回值的方法,供参考。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章