开发时遇到一个需求:要求要在页面的表格可以添加和删除一行,并能填写对应的数据后保存这一行数据。

HTML代码

界面使用了freemarker框架,teams是后台传过来的list类型数据

<form action="" id="" method="post">
...
<table id="addTable" >
<tr class="first_tr">
<th>姓名</th>
<th>国籍</th>
<th>单位</th>
<th>职务</th>
<th>专业、特长</th>
<th>操作</th>
</tr>
<#list teams as item>
<tr>
<input type="hidden" id="id" value="${item.id!}"/>
<td>${item.name!}</td>
<td>${item.gj!}</td>
<td>${item.dw!}</td>
<td>${item.zw!}</td>
<td>${item.zytc!}</td>
<td><input type="button" onclick="delRow(this)" value="-删除"/></td>
</tr>
</#list>
</table>
<table>
<tr>
<td celspan="6">
<input type="button" onclick="addRow()" value="+添加"/>
</td>
</tr>
</table>
...
</form>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32

为了不提交表格模板,我把模板放在了form表单外面,并且样式设置为不可见

需要添加的表格模板:

<table  style="display: none" id="tbl" >
<tr class="will80">
<td><input type="text" id="name" name="name" /></td>
<td><input type="text" id="gj" name="gj" /></td>
<td><input type="text" id="dw" name="dw" /></td>
<td><input type="text" id="zw" name="zw" /></td>
<td><input type="text" id="zytc" name="zytc"/></td>
<td></td>
//新增的表格中需要有保存和删除操作
<td><input type="button" onclick="save(this)" value="保存"/><input type="button" onclick="delRow(this)" value="-删除"/></td>
</tr>
</table>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

主要靠jquery代码,实现为#addTable添加最后一行 
原理就是获取id为“tbl”的一行复制添加到id为“addTable”的最后一行。 
保存这一行数据使用ajax。

jQuery代码

添加表格行
function addRow(){
var targetTbody= $("#tbl tbody");
//获取#tbl表格的最后一行
var tr = targetTbody.children("tr:last");
//复制到#addTable表格最后
var tr2=$("#addTable tbody").children("tr:last");
tr2.after(tr[0].outerHTML);
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
删除表格行
function delRow(obj){
//获取当前对象的父元素,在其下寻找id为“id”的元素的值
var id1=$(obj).parents("tr").find("#id").val();
var res=confirm("确定要删除么?");
if(res){
//删除界面元素,当前行
$(obj).parents("tr").remove();
}
//若有id就表示该数据是界面原本就有的,需要删除数据库数据
//若无id表示为界面动态添加的,删除时只需要删除界面元素
if(id1!=null){
//ajax删除数据
$.ajax({
url : "suggestpage_delTeam.do",
data : {"id":id1},
type : "POST",
success : function(data) {
if (data == "true") {
alert("删除成功");
} else {
alert(data);
}
}
});
}
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
保存单行数据
function save(obj) {
var param = {};
//获取当前属性
param.projectId="${proId}";
param.name = $(obj).parents("tr").find("#name").val();
param.gj = $(obj).parents("tr").find("#gj").val();
param.dw =$(obj).parents("tr").find("#dw").val();
param.zw = $(obj).parents("tr").find("#zw").val();
param.zytc = $(obj).parents("tr").find("#zytc").val();
//判空校验
if(checkNull(obj)){
//保存数据
$.ajax({
url : "suggestpage_savePeople.do",
ontentType : "application/x-www-form-urlencoded; charset=UTF-8",
data : param,
type : "POST",
success : function(data) {
if (data == "true") {
alert("保存成功");
//跳转界面
window.location="part2.do?proId="+param.projectId;
} else {
alert(data);
}
}
});
}
}
//判空校验
function checkNewNull(obj){
var ok=true;
//获取新增的input
var newtr=$(obj).parents("tr").find("input");
newtr.each(function(){
if($(this).val()==""){
alert("请将表单填写完整!");
$(this).focus();
ok=false;
return false;
}
});
return ok;
}

利用jquery动态添加和删除表格的一行,并且保存单行数据的更多相关文章

  1. jQuery动态添加和删除表格行

    <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta name ...

  2. jquery 动态添加和删除 ul li列表

    今天需要实现一个jquery动态添加和删除  ul li列表中的li行,自己简单的实现乐一个,分享一下 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML ...

  3. 利用jQuery动态添加input输入框,并且获取他的值

    动态添加 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  4. jQuery动态添加、删除按钮及input输入框

    输入框的加减实现: <html> <head> <meta charset="utf-8"> <title>动态创建按钮</t ...

  5. jQuery 动态添加、删除css样式

    1.addClass css中: <style type="text/css">       .chColor {background: #267cb7;color:w ...

  6. jQuery动态添加删除select项

    // 添加 function col_add() { var selObj = $("#mySelect"); var value="value"; var t ...

  7. jQuery如何动态添加具有删除按钮的行

    代码实例如下: <!DOCTYPE html><html><head><meta charset=" utf-8"><meta ...

  8. jquery 动态添加表格行

    jquery 动态添加表格行 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <h ...

  9. jquery动态添加删除div--事件绑定,对象克隆

    我想做一个可以动态添加删除div的功能.中间遇到一个问题,最后在manong123.com开发文摘 版主的热心帮助下解答了(答案在最后) 使用到的jquery方法和思想就是:事件的绑定和销毁(unbi ...

随机推荐

  1. MySQL 的索引是什么?怎么优化?

    索引类似大学图书馆建书目索引,可以提高数据检索的效率,降低数据库的IO成本.MySQL在300万条记录左右性能开始逐渐下降,虽然官方文档说500~800w记录,所以大数据量建立索引是非常有必要的.My ...

  2. C# 之 String.Empty

    .NET Framework 类库,表示空字符串,此字段为只读,命名空间:System.程序集:mscorlib(在 mscorlib.dll 中).   EG:protected string lo ...

  3. LVS DR模型RS端修改配置脚本

    #!/bin/bash vip=x.x.x.x in start) > /proc/sys/net/ipv4/conf/all/arp_ignore > /proc/sys/net/ipv ...

  4. Java注解的继承

    注解继承的说明 1.首先要想Annotation能被继承,需要在注解定义的时候加上@Inherited,并且如果要被反射应用的话,就需要还有个事@Retention(RetentionPolicy.R ...

  5. IT技术网站博客推荐

    CSDN 全球最大中文IT社区,为IT专业技术人员提供最全面的信息传播和服务平台. 51CTO 技术成就梦想 - 中国领先的IT技术网站 itEye Java编程 Spring框架 Ajax技术 ag ...

  6. Delphi 适合于文本文件的基本操作

  7. 异常-User class threw exception: java.lang.IllegalStateException: Cannot call methods on a stopped SparkContext.

    1 详细信息 User class threw exception: java.lang.IllegalStateException: Cannot call methods on a stopped ...

  8. centos 7 Network 脚本

    #!/bin/sh #主动启动网卡 interface=$() ifup $interface #获取当前网络信息 default_route=$(ip route show) default_int ...

  9. linux上如何安装git

    安装依赖软件 yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel asciidoc yum instal ...

  10. epoll机制和简述

    在linux的网络编程中,很长的时间都在使用select来做事件触发.在linux新的内核中,有了一种替换它的机制,就是epoll.相比于select,epoll最大的好处在于它不会随着监听fd数目的 ...