JS实现动态⽣成表格并提交表格数据向后端
本⽂实例介绍了JS实现动态⽣成表格并向后端提交表格数据的相关代码,分享给⼤家供⼤家参考,具体内容如下
先来看⼀下需求:在web页⾯上动态的⽣成表格,并可以对表格中的数据进⾏编辑,然后把表格中的数据提交⾄后端服务器保存。
那么我们⾸先需要解决的是动态⽣成表格的问题
1.⾸先我们需要导⼊JS库⽂件。
<script src="../js/jqui/jquery/jquery-1.5.2.min.js" type="text/javascript"></script>
2.然后在页⾯div中事先创建⼀个空⽩表格,可以根据需求⽽定,我这⾥是⼀个带表头的表格
<table border="0" 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⽅法供触发使⽤
var num = 0;
function addTable(){
var tableHtml ="";
tableHtml += '<tr id="tr'+num+'">'
+'<td><input class="addtd" id="cnashu1'+num+'" type="text" name="cnashu1" /></td>'
+'<td><input class="addtd" id="cnashu2'+num+'" type="text" name="cnashu2"/></td>'
+'<td><input class="addtd" id="cnashu3'+num+'" type="text" name="cnashu3"/></td>'
+'<td><input class="addtd" id="cnashu4'+num+'" type="text" name="cnashu4"/></td>'
+'<td><input class="addtd" id="cnashu5'+num+'" type="text" name="cnashu5"/></td>'
+'<td><a onclick="removeTr('+num+')">删除</a>'
+'<a id="edit'+num+'" class="edit" onclick="editDataByOne('+num+')">修改</a>'
+'<a id="save'+num+'" class="hide" 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.接下来我们对表格进⾏操作
//删除⾏
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.⾸先我们来看⼀下如何获得表格中的数据,还是结合上边的例⼦
<div>
<form id="submitForm">
<table border="0" 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标签的参数
var msg = $("#submitForm").serialize(); //获得后的msg的值:canshu1=xxx&canshu2=xxx&canshu3=xxx&canshu4=xxx&canshu5=xxx
3.拿到表格中的数据后,我们根据它值的形式把它转换成json格式的数据
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数据
通过上述代码,我们已经成功的将表格中的多条数据转换成了json格式的数据,那么我们就可以通过ajax的⽅式将Json数据发送到后台处理。
js获取json的key和value⾄此,我们获取表格中的多条数据并提交⾄服务器的代码就编写完了,希望对⼤家的学习有所帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。