layui的数据表格,点击自定义编辑按钮开启对某个字段来进行该行编辑更改

概要

上篇文章 <——   刚发布不到两天就来催我更新下一章,,唉~

它来了~它来了~

此 方法我是从layui的相关组件中进行更改的,查了查目前几个比较大的博客平台,好像就我一个 “ 创新”了该方法 !

ps:layui的组件演示中 没有用到 类似的 “ 按钮 ” 开启单个可编辑字段,它要么全开 要么全关~

当然如果你本来就知道或者在编程中早就用过这个方法  再或者  在我发布该文章之前看到类似原理的文章,前面的话就当我没说,哈哈哈哈

layui的table表单,当点击自定义编辑按钮 开启 对某个字段来进行该行编辑更改,此处更改是非弹窗形式,而是打开该字段的可编辑模式进行更改!

例如:

        当我点击自定义编辑“ 按钮1 ”时,该字段从原先的不可编辑状态变为可编辑状态,该框体的内容变为绿色(相当于提示一下“可编辑”状态),此时编辑“按钮1”变为带有 √ 的编辑“按钮2” 【按钮的切换再上一章已经给出,不会的去翻上一篇文章,举一反三就行】,编辑完成后,再次点击“按钮2”即可保存

见 下方几个 演示图片!!!

演示

图一

图二

图三

图四

图五 我就不截图了,就是:未更改时,点击 按钮2 后,提示 “未更改,,,”的消息提示!

代码

HTML:

<table class="layui-hide" id="staff_department_table" lay-filter="staff_department_table"></table>




<script id="department_caozuo" type="text/html">

<button type="button" class="layui-btn layui-btn-sm layui-btn-primary  add_department_edit_1" id="add_department_edit_1" lay-event="add_department_edit_1">
    <i class="layui-icon layui-icon-edit"></i>
  </button>


<button type="button" class="layui-btn layui-btn-sm layui-btn-primary  layui-border-green add_department_edit_2" id="add_department_edit_2" lay-event="add_department_edit_2">
    <i class="layui-icon layui-icon-ok "></i>
  </button>

</script>

css:

.add_department_edit_1{
    display:inline;
}
.add_department_edit_2{
    display:none;

}

js:

layui.use(['form','table','layer','laydate'],function(){
  var table = layui.table;
  var form = layui.form;
  var layer = layui.layer;
  var $ = layui.$;


 table.render({   

//表格的构建,我只截取了部分内容哈,这里面重点看 “ cols ” 里面的属性参数就行!
   
 elem: '#staff_department_table'
    ,url:'you_url'
    ,height: 500
    ,cellMinWidth: 80
    ,id:'staff_department_data'

,cols: [[
        {type: 'checkbox'}
      ,{title:'序号',type:'numbers'}
      ,{field:'department_name',title:'部门名称', unresize: true, sort: true, align: "center" }
      ,{field:'operation', fixed: 'right',title:'操作',templet:'#department_caozuo' , width:150  , align: "center"}
    ]]

  });

table.on('tool(staff_department_table)',function(obj){

 if (obj.event === 'add_department_edit_1') {
          console.log('点击了编辑', obj);

          // 获取当前行的索引
          var index = obj.data.LAY_TABLE_INDEX;

          // 隐藏第一个按钮,显示第二个按钮
          $(obj.tr).find('.add_department_edit_1').hide();
          $(obj.tr).find('.add_department_edit_2').show();

          // 将单元格设置为可编辑状态
          var field = 'department_name'; // 要修改的字段
          var oldValue = obj.data[field]; // 获取当前单元格的值
          var inputHtml = '<input type="text" class="layui-input" style="color: #16B777;" value="' + oldValue + '">';
          $(obj.tr).find('td[data-field="' + field + '"]').html(inputHtml);

          // 提示用户点击保存按钮
          layer.tips('点击即可保存', $(obj.tr).find('.add_department_edit_2'), { tips: 1 });

          // 监听保存按钮点击事件
          $(obj.tr).find('.add_department_edit_2').on('click', function() {
            // 获取输入框的值
                var newValue = $(obj.tr).find('td[data-field="' + field + '"] input').val();

                if(newValue.replace(/\s/g, '') === ''){
                     layer.tips('值不能为空', this, {tips: 1});
                }else{
                    // 执行保存操作,例如发送请求保存数据到后端
                    console.log('起始数据', oldValue);
                    console.log('保存成功', newValue);

                    // 将单元格恢复为非编辑状态
                    $(obj.tr).find('td[data-field="' + field + '"]').text(newValue);
                    // 隐藏保存按钮,显示编辑按钮
                    $(obj.tr).find('.add_department_edit_1').show();
                    $(obj.tr).find('.add_department_edit_2').hide();
                    layer.closeAll('tips');

                    if(oldValue ==newValue ){
                        layer.tips('未更改,已取消', $(obj.tr).find('td[data-field="' + field + '"]'), { tips: 1 } ,setTimeout(function(){layer.closeAll('tips')},700));
                        table.reload('staff_department_data');
                        return
                    }


//在此处写你的异步操作(如 : ajax 等)
                   
                      $.ajax({    
                        
                            //在这里面写你的ajax的异步操作
                            //另外几点提示: oldValue  是更改前数据(旧数据);newValue 是更改后数据(新数据) 这种英语不会翻译不出来吧!!!  
                                //另外 在ajax成功后 重载表格 语法 table.reload(' 注意:这里写你的table的 id 参数 '); 

                        })




                 }
          });
    }
 });
});



// 这代码有点多,我都一一给出注释了,应该能看懂了吧!!!!
//再次说明:代码 我是从我js全部代码 截取了相关部分,可能存在 “  });  ” 这相关括号未闭合情况,如有未闭合,还需要你自己再调整,反正代码没问题!!!

小结

以上就是,点击 自定义编辑按钮来 开启 对某个字段来进行该行编辑更改,可异步操作。

不懂的,可私信或评论;

下一章预告:

还是有关  table 的某个字段的下拉菜单 操作,以及可能出现 数据渲染 失败的个别错误分析以及更改,layui给出的演示,都带有下拉框 那种样式在表格中显示,自我感觉好丑~~

看预告图片:

上图是layui给出的演示,有select标签 边框,自我感觉有点丑(仅仅个人观点)~ 对此进行更改!

更改后:

链接:待更新~~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

L_Augety

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值