JS实现动态生成表格并提交表格数据向后端

本文实例介绍了JS实现动态生成表格并向后端提交表格数据的相关代码,分享给大家供大家参考,具体内容如下

先来看一下需求:在web页面上动态的生成表格,并可以对表格中的数据进行编辑,然后把表格中的数据提交至后端服务器保存。

那么我们首先需要解决的是动态生成表格的问题

1.首先我们需要导入JS库文件。

?
1
<script src= "../js/jqui/jquery/jquery-1.5.2.min.js" type= "text/javascript" ></script>

2.然后在页面div中事先创建一个空白表格,可以根据需求而定,我这里是一个带表头的表格

?
1
2
3
4
5
6
7
8
9
10
< table border = "0" style = "text-align: center;" width = "100%" id = "myTable" >
  < tr >
   < td width = "150px;" >表头1</ td >
   < td width = "150px;" >表头2</ td >
   < td width = "150px;" >表头3</ td >
   < td width = "150px;" >表头4</ td >
   < td width = "150px;" >表头5</ td >
   < td width = "150px;" >操作</ td >
  </ tr >
</ table >

3.表格创建好后,我们就可以写动态生成表格的关键代码了。我们写一个js方法供触发使用

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
var num = 0;
   function addTable(){
     var tableHtml = "" ;
     tableHtml += '<tr id="tr' +num+ '">'
          + '<td><input class="addtd" id="cnashu1' +num+ '" style="width:150px;" type="text" name="cnashu1" /></td>'
          + '<td><input class="addtd" id="cnashu2' +num+ '" style="width:150px;" type="text" name="cnashu2"/></td>'
          + '<td><input class="addtd" id="cnashu3' +num+ '" style="width:150px;" type="text" name="cnashu3"/></td>'
          + '<td><input class="addtd" id="cnashu4' +num+ '" style="width:150px;" type="text" name="cnashu4"/></td>'
          + '<td><input class="addtd" id="cnashu5' +num+ '" style="width:150px;" type="text" name="cnashu5"/></td>'
          + '<td><a style="cursor: pointer; color: blue;" onclick="removeTr(' +num+ ')">删除</a>'
            + '<a id="edit' +num+ '" class="edit" style="cursor: pointer; color: blue;" onclick="editDataByOne(' +num+ ')">修改</a>'
            + '<a id="save' +num+ '" class="hide" style="cursor: pointer; color: blue;" onclick="saveByOne(' +num+ ')">保存</a>'
          + '</td>'
          + '</tr>' ;
     
     var elements = $( "#myTable" ).children().length;  //表示id为“mtTable”的标签下的子标签的个数
     
     $( "#myTable" ).children().eq(elements - 1).after(tableHtml); //在表头之后添加空白行
     num++;  
   }

我们可以看到在<tb>标签中我们添加了<input>标签,主要是用来提供用户输入参数, 而全局变量num,主要是用来区分每一个添加的参数的id的唯一性而存在的。

4.接下来我们对表格进行操作

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//删除行
function removeTr(trNum){
   $( "#tr" +trNum).remove();
}
//编辑行
function editDataByOne(trNum){
   $ this = $( "#tr" +trNum);
   $( ".addtd" ,$ this ).removeAttr( "readonly" );
}
//保存行
function saveByOne(trNum){
   $ this = $( "#tr" +trNum);
   $( ".addtd" ,$ this ).attr( "readonly" , "readonly" );
}

上面我们对表格进行了删除,编辑,保存等操作,具体操作内容可以根据需求调整。(其实后来我发现可以不需要全局num,也可以实现对添加行的操作,至于怎么实现,主要是一些js的操作,有空再研究吧)

至此,我们动态生成表格的页面代码就完结了。
上半篇我们讲到了如何动态生成表格,接下来我们就讲一下如何获取表格中的多条数据,并提交至后台服务器

在开发之前我也在网上找了一些资料,要么太简洁,要么看不懂,但是他们大多数都提到了使用Json的方式将多个参数传入后台,那么我就根据这个思路编写了如下的代码。

1.首先我们来看一下如何获得表格中的数据,还是结合上边的例子

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
< div >
   < form id = "submitForm" >
     < table border = "0" style = "text-align: center;" width = "100%" id = "myTable" >
       < tr >
         < td width = "150px;" >表头1</ td >
         < td width = "150px;" >表头2</ td >
         < td width = "120px;" >表头3</ td >
         < td width = "120px;" >表头4</ td >
         < td width = "80px;" >表头5</ td >
         < td width = "100px;" >操作</ td >
       </ tr >
     </ table >
    </ form >
    < input type = "button" value = "添加" onclick = "addTable();" >
    < input type = "button" value = "提交" onclick = "save();" >
  </ div >

我们可以看到在Table标签的外层我们加了一层form标签,并设置form标签的id。

2.接下来我们根据jQuery的“serialize()”方法获取表格中input标签的参数

?
1
var msg = $( "#submitForm" ).serialize();  //获得后的msg的值:canshu1=xxx&canshu2=xxx&canshu3=xxx&canshu4=xxx&canshu5=xxx

3.拿到表格中的数据后,我们根据它值的形式把它转换成json格式的数据

?
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
var json = "[{" ;
var msg2 = msg.split( "&" );   //先以“&”符号进行分割,得到一个key=value形式的数组
var t = false ;
for ( var i = 0; i<msg2.length; i++){
   var msg3 = msg2[i].split( "=" );  //再以“=”进行分割,得到key,value形式的数组
   for ( var j = 0; j<msg3.length; j++){
     json+= "\"" +msg3[j]+ "\"" ;
     if (j+1 != msg3.length){
       json+= ":" ;
     }
     if (t){
       json+= "}" ;
       if (i+1 != msg2.length){  //表示是否到了当前行的最后一列
         json+= ",{" ;
       }
       t= false ;
     }
     if (msg3[j] == "canshu5" ){  //这里的“canshu5”是你的表格的最后一列的input标签的name值,表示是否到了当前行的最后一个input
       t = true ;
     }
   }
   if (!msg2[i].match( "canshu5" )){  //同上
     json+= ";" ;
   }
           
}
json+= "]" ;
//最终msg的值就被转换为:[{"key":"value";"key":"value"},{"key":"value";"key":"value"}]格式的json数据<br>

通过上述代码,我们已经成功的将表格中的多条数据转换成了json格式的数据,那么我们就可以通过ajax的方式将Json数据发送到后台处理。

至此,我们获取表格中的多条数据并提交至服务器的代码就编写完了,希望对大家的学习有所帮助。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值