本文实例介绍了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数据发送到后台处理。
至此,我们获取表格中的多条数据并提交至服务器的代码就编写完了,希望对大家的学习有所帮助。