前情回顾
随意删除添加后保存到服务端的input,再次编辑时(先调用服务端保存的值)添加新的input输入框name值可能会生成重复,提交保存时,name值重复的input元素会覆盖已有元素。
昨天借鉴jquery无刷新添加和删除input输入框 增加减少input框 的思路实现了jQuery无刷新随意添加和删除input输入框,但是在使用layui结合ajax提交时,发现随意添加/删除后会生成重复name值的input输入框(比如name=”edu_bg[5]” / name=”edu_bg[6]” / name=”edu_bg[5]” 三个输入框)进行编辑提交,提交后只保存了后两个值,因为layui表单中name不支持数组的形式,相同的name也只会提交最后一个,layui社区也有朋友分享出解决方法:表单input不支持数组方式询问+解决办法,可以借鉴下。
思路整理
综合了一大堆搜索及意见,也不想改动框架的代码,决定采用以下方式:
1、获取已经存在的子元素input的长度及name值,将获取的name值推入一个数组arr1中;
2、定义初始值key=0,定义插入函数insertInput(),key++循环;
3、当edu_bg[key]不在数组arr1中时,创建元素并append()推入父元素内完成,否则,重新执行insertInput()函数。
代码实现
HTML代码
主要是定义几个已有的包含input的子元素(模拟从服务端获取的已有元素),然后定义一个包含点击事件的按钮元素。
1 | <div class="layui-form-item yf-input-del"> |
JavaScript代码
定义一个插入函数insertInput()和一个点击删除函数
1 | //引入layui.js |
补充CSS样式
这部分没必要,自己来就行,只是为了自己测试时样式顺眼一丢丢。。
1 | <link rel="stylesheet" href="/layui/dist/css/layui.css"> |
写在最后
整个实现的过程是自己摸索和反复测试的过程,代码中也还有不少需要优化的地方,也可能会在以后的使用中继续优化整改,抛砖引玉,仅供大家参考。
layui官网文档 http://www.layui.com/doc/
jQuery API中文文档 http://www.css88.com/jqapi-1.9/