在上一篇笔记中波波分享了基于layui实现的表单自定义组件,对于后端开发者来讲可以通过该组件非常方便的实现Form表单的DIY需求。
今天波波在昨天笔记的基础上又进一步的进行了完善,增加了表单元素的动态添加和删除。目前本组件已经整合到了最新的Tp-admin项目中,项目地址:https://gitee.com/zkii_admin/Tp-admin
同时自定义表单组件支持单独使用。组件源码下载地址:
使用方法波波也集成到了最新的Tp-admin开源项目中了。非常简单在需要自定义表单的页面添加一个“添加元素”按钮。
示例代码如下:
- <div class="layui-text" style="margin-top: 5px">
- <span style="margin-left: 40px;font-size: 14px;"><b>自定义属性</b></span>
- <span class="nowrap pull-right">
- <a data-modal='自定义FORM表单访问路径' data-title="新增属性" class="layui-btn layui-btn-xs" href="javascript:void(0)"><i class="fa fa-bookmark-o"></i> 新增属性</a>
- </span>
- <input id="extra" type='hidden' value='{$vo.extra|default=""}' name='extra'/>
- </div>
- <div id="extra_attr" style="margin-top: 10px;">
在页面中添加Javascript代码。注意引入jQuery。
- <script>
- window.form.render();
- //自定义属性
- function appendAttr(d,e){
- $(e).hide().appendTo($('#'+d)).fadeIn('slow');
- window.form.render();
- }
- //删除按钮--删除动态添加的元素
- $(document).on('click','.delete',function () {
- $(this).parent().parent().remove();
- window.form.render();
- })
- </script>
上述组件主要基于Layui的样式,如需用于其他地方注意调整,否则可能会造成样式错乱。最终实现效果如下。
如果您采用Tp-admin开发框架进行项目开发,仅需上述简单代码就能实现表单自定义,包含图片及文件上传等功能均不需要再编写代码,可以自动完成文件的上传。
接下来这个组件如需继续开发,则会根据隐藏域“extra”的值(Json类型)对自定义属性“div”下的元素进行自动创建和渲染,以初始化自定义属性。这样后端完全不用理会用户添加多少内容,添加什么内容。后端接受的数据全部以字符串的形式进行存储,不以用户自定义的任何值进行查询操作,最大限度保障后端数据安全,防止sql漏洞。