layui-table表格头工具栏编辑事件(弹子窗口)

layui-table中有两个地方有编辑功能,这两个地方略有不同,但基本原理都是一样的。

layui-table表格头工具栏编辑事件(弹子窗口)_第1张图片
image.png

这里我实现的方式是弹出一个子窗口页面,将选中要编辑的数据依此放到子窗口中,进行编辑操作。如下图所示:


layui-table表格头工具栏编辑事件(弹子窗口)_第2张图片
image.png

首先给大家展示一下 “行工具事件” 中的 “编辑” 功能代码,然后再演示 “头工具事件”中的 “编辑” 功能代码,大家做下对比。

  //监听行工具事件
  table.on('tool(test)', function(obj){ //注:tool 是工具条事件名,test 是 table 原始容器的属性 lay-filter="对应的值"
    var data = obj.data //获得当前行数据(json格式的键值对)
    ,layEvent = obj.event //获得 lay-event 对应的值(编辑、删除、添加)
    ,editList=[]; //存放获取到的那条json数据中的value值(不放key)
    $.each(data,function(name,value) {//循环遍历json数据
        editList.push(value);//将json数据中的value放入数组中(下面的子窗口显示的时候要用到)
    });
    if(layEvent === 'edit'){ 
             //脚本编辑弹出层
               var name = encodeURIComponent(data.toolName);
                 // console.log(data.toolName);
                layer.open({
                   type: 2,
                   title: '编辑学员信息', 
                   shadeClose: true,
                   shade: 0.8,
                   maxmin: true,
                   area: ['70%', '70%'],
                   content: '${pageContext.request.contextPath}/jsp/studentEdit.jsp?toolSceneId='+data.toolSceneId+'&'+'id='+data.id,//设置你要弹出的jsp页面
                   success: function(layero, index){  
                       var body = layer.getChildFrame('body', index);  
                       var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();  
                       var inputList = body.find("input");//获取到子窗口的所有的input标签
                       for (var i = 0; i < inputList.length; i++ ) { 
                          $(inputList[i]).val(editList[i]); //遍历子窗口的input标签,将之前数组中的值一次放入显示
                       }    
                   }   
                });  
     }
   });

studentEdit.jsp中的表单,基本没啥要求,只要除了id字段的其他字段能修改就ok:

studentEdit.jsp中的layui提交修改的代码:


大概的效果是这样的:


Video_2018-12-03_112507[00-00-00--00-00-30].gif

“头工具事件”中的 “编辑” 功能的layui代码如下:(除了获取行数据的格式那块代码有点不同以外,其他原理都一样)

//监听头工具栏事件
  table.on('toolbar(test)', function(obj){
    var checkStatus = table.checkStatus(obj.config.id)
    ,data = checkStatus.data //获取选中的数据
    ,editList=[]; 
    for(var i=0;i 1){
          layer.msg('只能同时编辑一个');
        } else {
            //脚本编辑弹出层
            var name = encodeURIComponent(data.toolName); 
            layer.open({
               type: 2,
               title: '编辑学员信息', 
               shadeClose: true,
               shade: 0.8,
               maxmin: true,
               area: ['70%', '70%'],
               content: 'studentEdit.jsp?toolSceneId='+data.toolSceneId+'&'+'id='+data.id,
               success: function(layero, index){  
                   var body = layer.getChildFrame('body', index);  
                   var iframeWin = window[layero.find('iframe')[0]['name']]; //得到iframe页的窗口对象,执行iframe页的方法:iframeWin.method();  
                   var inputList = body.find("input"); 
                   for (var i = 0; i < inputList.length; i++ ) {  
                      $(inputList[i]).val(editList[i]); 
                   }    
               }   
            });      
        }
      break;
 }); 

功能的实现都写在代码注释中了,大家仔细研究代码就可以了。
layui的学习,还是要多看文档多实践的,希望对大家有所帮助。

你可能感兴趣的:(layui-table表格头工具栏编辑事件(弹子窗口))