Files
layui/docs/table/examples/editModes.md
morning-star 2e5ad41aef feat(form-select): 新增 lay-append-to 属性 (#1926)
* feat(form-select): 新增 `lay-append-to` 属性

docs(form-select): 更新文档

fix: 修复定向渲染 BUG

fix: 修复点击元素外部关闭面板时的一些问题

refactor: 重命名部分变量

feat: lay.onClickOutside 新增 capture 选项

feat: lay.onClickOutside 新增 detectIframe 属性

chore: 修改部分变量命名

fix: 窗口大小改变时,面板位置异常

revert: 1fe122b

fix: 修复一些边缘情况

refactor: 将 lay-append-to-body 重命名为 lay-append-to

fix: 重新渲染时,应该移除旧的面板元素

* update code

* docs(form): 新增 `lay-append-position` 属性的文档介绍

* docs: 优化 select 在 table 多样化编辑中的示例

* docs(form-select): 增加 `lay-append-to` 的相关示例

* feat(form-select): 新增 `lay-append-position` 属性,用于设置 `select` 面板开启 `lay-append-to` 属性后的定位方式

* chore(form-select): 剔除多余代码

* docs(form-select): 优化 select 在 layer 中使用的示例
当鼠标滑动 layer 内部滚动条时移除下拉框,以规避错位

---------

Co-authored-by: 贤心 <3277200+sentsim@users.noreply.github.com>
2024-06-17 18:35:03 +08:00

6.0 KiB

{{! <script type="text/html" id="TPL-select-demo"> {{# var cityList = d.cityList || ["北京","上海","广州","城市-1"]; }} select 方式 {{# layui.each(cityList, function(i, v){ }} {{= v }} {{# }); }} </script> <script type="text/html" id="TPL-dropdpwn-demo"> {{= d.sex || '无' }} </script> <script type="text/html" id="TPL-laydate-demo"> </script> <script type="text/html" id="TPL-colorpicker-demo"> {{# var color = d.color || ['#16baaa','#16b777','#1E9FFF','#FF5722','#FFB800','#393D49'][Math.round(Math.random()*5)]; }}
</script>!}} <script> layui.use(function(){ var $ = layui.$; var table = layui.table; var form = layui.form; var dropdown = layui.dropdown; var laydate = layui.laydate; var colorpicker = layui.colorpicker; var util = layui.util; // 渲染 table.render({ elem: '#ID-table-demo-editmodes', url: '/static/json/2/table/user.json', // 此处为静态模拟数据,实际使用时需换成真实接口 page: true, css: [ // 设置单元格样式 // 取消默认的溢出隐藏,并设置适当高度 '.layui-table-cell{height: 50px; line-height: 40px;}', '.layui-table-cell .layui-colorpicker{width: 38px; height: 38px;}', '.layui-table-cell select{height: 36px; padding: 0 5px;}' ].join(''), cols: [[ // 表头 {field: 'id', title: 'ID', width:80, align: 'center', fixed: 'left'}, {field: 'city', title: 'select', minWidth: 150, templet: '#TPL-select-demo'}, {field: 'sex', title: 'dropdown', width: 130, unresize: true, align: 'center', templet: '#TPL-dropdpwn-demo'}, {field: 'date', title: 'laydate', minWidth: 150, templet: '#TPL-laydate-demo'}, {field: 'color', title: 'color', width: 80, unresize: true, align: 'center', templet: '#TPL-colorpicker-demo'}, {field: 'sign', title: '文本', edit: 'textarea'} ]], done: function(res, curr, count){ var options = this; // 获取当前行数据 - 自定义方法 table.getRowData = function(tableId, elem){ var index = $(elem).closest('tr').data('index'); return table.cache[tableId][index] || {}; }; // 展示数据 - 仅用于演示 var showData = function(data) { return layer.msg('当前行最新数据:
'+ util.escape(JSON.stringify(data)), { offset: '16px', anim: 'slideDown' }); }; // layui form select 事件 form.on('select(select-demo)', function(obj){ var value = obj.value; // 获取选中项 value // 获取当前行数据(如 id 等字段,以作为数据修改的索引) var data = table.getRowData(options.id, obj.elem); // 更新数据中对应的字段 data.city = value; // 显示当前行最新数据 - 仅用于示例展示 showData(data); }); // dropdown 方式的下拉选择 dropdown.render({ elem: '.dropdpwn-demo', // trigger: 'hover', // 此处的 data 值,可根据 done 返回的 res 遍历来赋值 data: [{ title: '男', id: 100 },{ title: '女', id: 101 },{ title: '保密', id: 102 }], click: function(obj){ var data = table.getRowData(options.id, this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引) this.elem.find('span').html(obj.title); // 更新数据中对应的字段 data.sex = obj.title; // 显示当前行最新数据 - 仅用于示例展示 showData(data); } }); // laydate laydate.render({ elem: '.laydate-demo', done: function(value, date, endDate){ var data = table.getRowData(options.id, this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引) // 更新数据中对应的字段 data.date = value; // 显示当前行最新数据 - 仅用于示例展示 showData(data); } }); // colorpicker colorpicker.render({ elem: '.colorpicker-demo', done: function(value){ var data = table.getRowData(options.id, this.elem); // 获取当前行数据(如 id 等字段,以作为数据修改的索引) // 更新数据中对应的字段 data.color = value; // 显示当前行最新数据 - 仅用于示例展示 showData(data); } }); // 单元格普通编辑事件 table.on('edit(ID-table-demo-editmodes)', function(obj){ var value = obj.value // 得到修改后的值 var data = obj.data // 得到所在行所有键值 var field = obj.field; // 得到字段 // 更新数据中对应的字段 var update = {}; update[field] = value; obj.update(update); // 编辑后续操作,如提交更新请求,以完成真实的数据更新 // … // 显示当前行最新数据 - 仅用于示例展示 showData(data); }); // 更多编辑方式…… } }); }); </script>