动态增删表单

动态增删表单

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;来实现代码的复用&…

openwrt 遍译php_openwrt安装编译

官网安装编译推荐&#xff1a;1. host32位主机~$uname -aLinux yuxi-T530 3.13.0-66-generic #108-Ubuntu SMP Wed Oct 7 15:21:40 UTC 2015 i686 i686 i686 GNU/Linux~$lsb_release -aNo LSB modules are available.Distributor ID: UbuntuDescription: Ubuntu14.04.3LTSRelea…

java11+osgi_错误学习:Java + OSGi

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

《Effective Java》读书笔记 - 5.泛型

Chapter 5 Generics Item 23: Don’t use raw types in new code 虽然你可以把一个List<String>传给一个List类型&#xff08;raw type&#xff09;的参数&#xff0c;但你不应该这么做&#xff08;因为允许这样只是为了兼容遗留代码&#xff09;&#xff0c;举个例子&am…

输入框长度校验

输入框长度校验1.例子 <input id"username" onkeyup"checkLength(this,80)"/>80是限制的长度 //输入长度校验,当长度超出限制&#xff0c;截取0到限制长度的字符串 function checkLength(obj, length) {if ($(# $(obj).attr("id")).val…

集群没有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;因此我在这里总结一下&…

Halcon学习笔记——机器视觉应用工程开发思路及相机标定

机器视觉应用工程开发思路 机器视觉应用工程主要可划分为两大部分&#xff0c;硬件部分和软件部分。 1.硬件部分&#xff0c;硬件的选型至关重要&#xff0c;决定了后续工作是否可以正常开展&#xff0c;其中关键硬件部分包括&#xff1a;光源&#xff0c;相机以及镜头。 2.软件…

输入框不可以输入中文

输入框不可以输入中文1.输入框不可以输入中文&#xff0c;中文直接消失 <input oninput "valuevalue.replace(/[\u4e00-\u9fa5]{0,}$/g,)"/>2.说明 oninput 事件在元素值发生变化是立即触发 匹配使用正则表达式 正则表达式在线测试网站

图片上传js验证图片长宽_js判断图片上传时的文件大小,和宽高尺寸

今天在做图片上传的小功能&#xff0c;使用了一个kissy上传组件。很好奇它是如何在图片上传前&#xff0c;检测到图片的大小和尺寸的&#xff1f;我们来写个小实例实现一下吧如何读取图片的size首先&#xff0c;原生input file控件有个files属性&#xff0c;该属性是一个数组。…

必填校验加变色,点击颜色消失

必填校验加变色&#xff0c;点击颜色消失1.例子 <td changeColorForNull"ah0"><input class"noNull" type"text" id"ah0"name"ah" notNull"案号" onfocus"myFocus(this)" value"" …

一个关于python装饰器参数的问题

看到廖雪峰python教程上&#xff0c;python装饰器一章 https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/0014318435599930270c0381a3b44db991cd6d858064ac0000 在最后的作业题上 再思考一下能否写出一个log的decorator&#xff0c;使它既…

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

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

apache shiro_Apache Shiro第1部分–基础

apache shiroApache Shiro &#xff08;最初称为JSecurity&#xff09;是Java安全框架。 它被接受并于2010年成为Apache顶级项目。它的目标是功能强大且易于使用。 该项目正在积极开发中&#xff0c;用户和开发人员的邮件列表均处于活动状态。 最重要的区域记录在其网页上。 但…

js编码解码

js编码解码//对输出结果编码 function encodeStr(val) {return encodeURIComponent(encodeURIComponent(trim(val))); }// 对参数解码 function decodeStr(val) {return decodeURIComponent(decodeURIComponent(trim(val))); }后端解码 public static String urlDecode(String …

PHP 中文文件名 空格等 CURL 读取

用rawurlencode 对文件名进行编码转载于:https://www.cnblogs.com/zhaoyun4122/p/7198895.html

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

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

谨慎使用JUnit的预期异常

有时&#xff0c;当我们收到对jOOQ或其他库的拉取请求时&#xff0c;人们会将单元测试中的代码更改为更“惯用的JUnit”。 特别是&#xff0c;这意味着他们倾向于更改此代码&#xff08;公认的不是那么漂亮的代码&#xff09;&#xff1a; Test public void testValueOfIntInv…

plupload使用例子

plupload使用例子1. 例子 <li><a id"uploadFile">上传</a></li>//文书上传和显示 $(function () {var uploader new plupload.Uploader({runtimes: html5,flash,silverlight,html4,// 指定上传方式browse_button: uploadFile,unique_names…

mysql获取相隔时间段的数据

思路&#xff1a;为时间段内的数据进行编序号&#xff0c;然后计算好相隔时间&#xff0c;拿到id作为搜索条件 SELECT * FROM ( SELECT (i:i1) as i, id, data_send_time FROM jl_pims_machine_time mt,(select i:0) as it where mt.company_id 1001 AND mt.machine_id 1 ord…