动态增删表单

动态增删表单

1.实现效果

在这里插入图片描述
在这里插入图片描述

2.两种方式,推荐第二种(不管是第一种还是第二种,想要序列化都必须,id不同)

(1)表单clone的方式(简单演示,道理相通)

                <div id="cxdx"><form id="formBody0"><table></table></form><div>     	

表单clone主要是js。

//form表单命名
var length = 1;
//新增查询对象
function addCxdx() {var $form = $("#cxdx form").last();//克隆好的form表单var newForm = $form.clone(true);//设置动态idnewForm.attr("id", 'formBody' + length);newForm.find(":input").not(":button").each(function (i) { //循环新克隆form表单在里边找到所有的input标签,if ($(this).not(":radio").length > 0 && !$(this).prop("disabled")) {$(this).val(""); //给不是radio框的inputvalue赋值为空setCheckVal($(this),false);}});newForm.find('[id]').each(function (index, value){$(value).attr('id',$(value).attr('id').replace(/\d+/,'') + length);});//表单删除需要自定义的指向它父元素的id。newForm.find('[deleteCxdx]').each(function (index, value){$(value).attr('deleteCxdx',$(value).attr('deleteCxdx').replace(/\d+/,'') + length);});//必填校验变色的newForm.find('[changeColorForNull]').each(function (index, value){$(value).attr('changeColorForNull',$(value).attr('changeColorForNull').replace(/\d+/,'') + length);});//新增表单样式去除newForm.find('[style]').attr('style','');//追加$("#cxdx").append(newForm);//查询对象初始化$('.select_option').remove();selectInit($('.inputSel'));length++;
}
//删除查询对象
function deleteCxdx() {//获取子form表单的数量var len = $("#cxdx form").length;//被选中的复选框的数量var checklength = $(":checkbox[name='selectCxdx']:checked").length;if (len === checklength){layer.alert("至少保留一个查询对象", {icon: 0});}else {$(":checkbox[name='selectCxdx']:checked").each(function (index,value) {$("#" + $(value).attr('deleteCxdx')).remove();})}
}

因为没有table的样式看着比较奇怪,下面的模板就是一个这样的表单,我把class里面的样式去除了,公司封装,你们也用不了。但是js大体如此。

(2)写一个模板进行复制

1.模板(这是一个jsp,就叫cxdxTemplate.jsp)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<table class="" id="cxdxTable${index}"><colgroup><col style="width: 5%"/><col style="width: 20%"/><col style="width: 20%"/><col style="width: 10%"/><col style="width: 15%"/><col style="width: 15%"/><col style="width: 15%"/></colgroup><tr><td rowspan="4"><label><input class="" deleteCxdx="cxdxTable${index}"type="checkbox"id="selectCxdx${index}" name="selectCxdx"></label></td><td class="">案号<i class="required">*</i></td><td class="" changeColorForNull="ah${index}"><input class="noNull" type="text" id="ah${index}"name="ah"notNull="案号"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,50)"/></td><td class="">承办人<i class="required">*</i></td><td class="" changeColorForNull="cbr${index}"><input class="noNull" type="text" id="cbr${index}"name="cbr" notNull="承办人"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,20)"/></td><td class="">书记员<i class="required">*</i></td><td class="" changeColorForNull="sjy${index}"><input class="noNull" type="text" id="sjy${index}"name="sjy" notNull="书记员"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,20)"/></td></tr><tr><td class="">查询对象<i class="required">*</i></td><td class="" changeColorForNull="mc${index}"><input class="noNull" type="text" id="mc${index}"name="mc"notNull="查询对象"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,100)"/></td><td class="">涉案身份</td><td class=""><select class="" id="ssdw${index}" name="ssdw"><option value=""></option><c:forEach items="${sasf}" var="sasf"><option value="${sasf.key}">${sasf.value}</option></c:forEach></select></td><td class="">类型<i class="required">*</i></td><td class=""><input class="" type="text" value="自然人" disabled="disabled"onfocus="myFocus(this)"/></td></tr><tr><td class="">证件类型<i class="required">*</i></td><td class="" changeColorForNull="zjlx${index}"><select class="noNull" id="zjlx${index}" name="zjlx"notNull="证件类型"onchange="myFocus(this)"><option value=""></option><c:forEach items="${zjfl}" var="zjfl"><option value="${zjfl.key}">${zjfl.value}</option></c:forEach></select></td><td class="tdTitle">证件号码<i class="required">*</i></td><td class="" colspan="3" changeColorForNull="zjhm${index}"><input class="noNull" type="text" id="zjhm${index}"name="zjhm" notNull="证件号码"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,30)" oninput = "value=value.replace(/[\u4e00-\u9fa5]{0,}$/g,'')"/></td></tr><tr><td class="">国家或地区</td><td class=""><select class="" id="gj${index}" name="gj"><option value=""></option><c:forEach items="${gj}" var="gj"><option value="${gj.key}">${gj.value}</option></c:forEach></select></td><td class="">户籍地<i class="required">*</i></td><td class="" colspan="3"changeColorForNull="hjszd${index}"><input class="noNull" type="text"id="hjszd${index}"name="hjszd" notNull="户籍地"onfocus="myFocus(this)" value="" onkeyup="checkLength(this,30)"/></td></tr>
</table>

2.这是复制table,form也是类似的,js发请求

//初始加载
$(function () {//初始加载的时候就把length获取到length = $("#cxdxPart table").length;
})
//新增查询对象
function addCxdx() {$.ajax({url: getUrlPath() + '/cxdxTemplate.do',type: 'POST',dataType: 'html',data: {"length": length++},success: function (res) {var resCxdx = $(res);$('#cxdxPart').append(resCxdx);//去除样式的,可以不必关注checkboxInit(resCxdx.find('.inputCheck'));$('.select_option').remove();selectInit($('.inputSel'));},error: function (res) {layer.alert(res.message, {icon: 7});}})
}
    @PostMapping(value = "/cxdxTemplate.do")public ModelAndView cxdxTemplate(int length) {log.info("查询对象表格的数量: {}", length);ModelAndView mav = new ModelAndView("cxdxTemplate");//这里传你需要回填的一些数据mav.addObject("xxx", xxx);mav.addObject("index", length);return mav;}

大体方向如此,希望对你有所借鉴。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/355162.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

策略模式(组件协作模式)

策略模式&#xff08;组件协作模式&#xff09; 策略模式实例代码 注解 目的 正常情况下&#xff0c;一个类/对象中会包含其所有可能会使用的内外方法&#xff0c;但是一般情况下&#xff0c;这些常使用的类都是由不同的父类继承、组合得来的&#xff0c;来实现代码的复用&…

java11+osgi_错误学习:Java + OSGi

java11osgi最近&#xff0c;我致力于在OSGi环境中使Apache Hive工作。 虽然没有被证明是小菜一碟&#xff08;软件对吗&#xff1f;。。为什么我不感到惊讶&#xff1f; &#xff09;&#xff0c;它引导我解决了各种Java和OSGi错误。 在这里&#xff0c;我列出了其中一些让我有…

集群没有leader_ZooKeeper 集群中 Leader 与 Follower 的4种数据同步策略

首先要声明一点&#xff0c;zk集群中&#xff0c;leader服务器有着比较重要的存在&#xff0c;Follower 服务器只是处理非事务性请求&#xff0c;leader服务器主要负责事务性请求&#xff0c;Follower 服务器在遇到事务性请求以后还是会转发给leader服务器处理&#xff0c;所以…

JavaOne 2015:高级模块化开发

JavaOne 2015看到了Project Jigsaw团队关于Java 9中的模块化的一系列讨论 。它们都是非常有趣的&#xff0c;并且充满了宝贵的信息&#xff0c;我敦促每个Java开发人员都注意它们。 除此之外&#xff0c;我想给社区一种搜索和引用它们的方法&#xff0c;因此我在这里总结一下&…

action怎么获得 ajax date参数_ajax()gt;load()事件的新用法!!!

load()函数用于从服务器加载数据&#xff0c;并使用返回的html内容替换当前匹配元素的内容。load()函数默认使用GET方式&#xff0c;如果提供了对象形式的数据&#xff0c;则自动转为POST方式。load()函数只会替换每个匹配元素的内部内容(innerHTML)。你还可以在URL字符串后面追…

无显示器u盘安装centos_最新版 CentOS 8.1.1911 安装教程及常见问题图文详解

基于笔记本(华硕)操作&#xff0c;使用软碟通(UltraISO)制作的系统启动盘(U盘&#xff0c;内存大于8G)操作可自行百度&#xff0c;非常简单(或可留言&#xff0c;择情况出一期U盘制作启动盘教程)。a、登录 centos 官网下载镜像文件官网地址&#xff1a;https://www.centos.org阿…

bom实现方块移动_从0开始实现一个俄罗斯方块

写在前面得话&#xff1a;这篇文章主要记录了我是怎么一步一步写出俄罗斯方块&#xff0c;整个代码用的函数编程&#xff0c;主要是为了让一些不熟悉es6, 面向对象写法得 新手能更容易看明白&#xff0c;全部得代码中都是一些js的基础知识&#xff0c;很容易理解。要说有点麻烦…

cli3解决 ie11语法错误 vue_基于 Vue + Koa2 + MongoDB + Redis 实现一个完整的登录注册...

项目地址&#xff1a;https://github.com/caochangkui/vue-element-responsive-demo/tree/login-register通过 vue-cli3.0 Element 构建项目前端&#xff0c;Node.js Koa2 MongoDB Redis 实现数据库和接口设计&#xff0c;包括邮箱验证码、用户注册、用户登录、查看删除用户…

gwt 嵌入html_GWT和HTML5画布演示

gwt 嵌入html这是我对GWT和HTML5 Canvas的第一个实验。 我的第一个尝试是创建矩形&#xff0c;仅用几行代码就得出了这样的内容&#xff1a; 码&#xff1a; public class GwtHtml5 implements EntryPoint {static final String canvasHolderId "canvasholder";sta…

tez什么意思_传统数仓和大数据数仓的区别是什么?

概念与容器为什么先说这个&#xff0c;其实很简单&#xff1a;因为绝大多数人都把这两个概念混为一谈。然后就会出现各种各样的问题&#xff1a;oracle不是数据库么&#xff0c;怎么又是数据仓库&#xff1f;Hive不是数据仓库么&#xff1f;怎么又是数据库&#xff1f;数据仓库…

华为M2平板打不开云课堂_能运行PC应用的安卓生产力平板:华为MatePad Pro 5G登场...

当手机屏幕无法承担更复杂的工作任务&#xff0c;当PC重量不能满足更随性的移动办公&#xff0c;拥有全面屏和便携优势的平板电脑或是中间值&#xff0c;但前提是其必须拥有足够强大的生产力。5月27日华为在国内上市的其首款5G平板——华为MatePad Pro 5G&#xff0c;就是5G时代…

soa示例_SOA示例应用程序

soa示例SOA描述了一组用于创建松散耦合的&#xff0c;基于标准的&#xff0c;与业务相关的服务的模式&#xff0c;由于描述&#xff0c;实现和绑定之间的关注点分离&#xff0c;因此提供了新的灵活性。 近年来&#xff0c;至少在参与大多数信息技术活动的人们中&#xff0c;面向…

body curl 设置post_curl 命令详解

常用参数常用参数分类# 调试类-v, --verbose 输出信息-q, --disable 在第一个参数位置设置后 .curlrc 的设置直接失效&#xff0c;这个参数会影响到 -K, --config -A, --user-agent -e, --referer-K, --config FILE …

NetBeans Java EE技巧7:忽略的Java类和XHTML编辑器快捷方式

有时&#xff0c;最被忽略的是IDE最有用的功能。 在本文中&#xff0c;我将概述在开发Java EE应用程序时可以使用的五个NetBeans Java和XHTML编辑器快捷方式。 &#xff03;1 –轻松修复命名空间和类 也许您已经向尚未声明名称空间的视图中添加了新的JSF标记&#xff0c;或者…

python学习第三十二节(进程间通信、进程池、协程)

当多线程创建完毕之后&#xff0c;start并没有了立刻运行&#xff0c;依旧需要和其他线程抢CPU的资格&#xff0c;只是时间很短。进程之间的通信分为两种&#xff0c;queue和pipe 1 import multiprocessing2 def foo(q):3 q.put([1,hello,True])4 if __name____main__:5 …

备份ad_IT管理公开课——备份恢复解决方案

时间&#xff1a;2020年5月28日 14:00内容&#xff1a;调查显示&#xff0c;44&#xff05;的客户面临意外删除或修改数据&#xff0c;如果没有提前备份&#xff0c;这些数据是很难恢复的。RecoveryManager Plus是一款针对AD域&#xff0c;Exchange&#xff0c;Sharepoint以及O…

Ajax中的url使用规则

Ajax中的url使用规则Ajax中的url使用规则如下&#xff1a; 先封装项目访问地址&#xff1a; String basePath request.getScheme() "://" request.getServerName() ":" request.getServerPort() request.getContextPath();然后在js中定义&#xff1…

[网络管理]全双工与半双工的差别

[网络管理]全双工与半双工的差别 同事说新办公室的网络一直不稳定&#xff0c;常常掉线延迟。检查进口线路和更换转接网线。都无法解决这个问题。预计是不是进口网线中一根或者2根短路&#xff0c;那就改动下网卡属性吧。 把自适应改成全双工10M模式&#xff0c;測试OK。全双工…

echarts大屏模板_完整的可视化大屏分享,科技感十足,各行业直接就能用

你的老板有没有要求过你做一个可视化大屏&#xff1f;或许在你看来&#xff0c;这就是一个无理的需求&#xff0c;很简单啊&#xff0c;做几个动态图表&#xff0c;直接投影到屏幕上不就行了&#xff1f;就算做出来能用数据增长业务吗&#xff1f;不懂为什么要拍脑袋做大屏&…

Java面试基础知识(1)

1、final, finally, finalize的区别final&#xff1a;修饰符&#xff08;关键字&#xff09;如果一个类被声明为final&#xff0c;没有子类也不能被继承。因此一个类不能既被声明为 abstract的&#xff0c;又被声明为final的。将变量或方法声明为final&#xff0c;可以保证它们…