以下代码可以实现动态添加行,但是INPUT的name值是一样的.
如何实现添加行的name值自增?
tr.find("td").get(0).innerHTML 如何修改呢?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
//隐藏模板tr
//$("#tb tr").eq(2).hide();
var i = 1;
$("#BtAdd").click(function () {
//复制一行
var tr = $("#tb tr").eq(1).clone();
tr.find("td").get(0).innerHTML = ++i;
//此行错误
//tr.find("td").get(0).innerHTML ="<td style='text-align: center'>"+i+"</td><td><input id='CK"+i+"' type='checkbox' name='CK'/></td><td><INPUT class='INPUT' TYPE='text' NAME='qq"+i+"'></td>"; tr.show();
tr.appendTo("#tb");
});
$("#BtDel").click(function () {
$("#tb tr:gt(1)").each(function () {
if ($(this).find("#CK").get(0).checked == true) {
$(this).remove();
}
});
i = 1;
$("#tb tr:gt(1)").each(function () {
$(this).find("td").get(0).innerHTML = ++i;
});
$("#CKA").attr("checked", false);
});
$("#CKA").click(function () {
$("#tb tr:gt(1)").each(function () {
$(this).find("#CK").get(0).checked = $("#CKA").get(0).checked;
});
});
})
</script>
</HEAD> <BODY>
<table border="1" id="tb">
<tr>
<td style="text-align: center"></td>
<td><input id="CKA" name="CKA" type="checkbox"/></td>
<td>网名</td>
<td>博客</td>
<td>电邮</td>
<td>网络硬盘网络</td>
<td>QQ1</td>
<td>QQ2</td>
<td>QQ3</td>
<td>QQ4</td>
<td>QQ5</td>
<td>QQ6</td>
<td>QQ7</td>
</tr>
<tr>
<td style="text-align: center">1</td>
<td><input id="CK" type="checkbox" name="CK"/></td>
<td><INPUT class="INPUT" TYPE="text" NAME="qq"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ww"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ee"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="rr"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="tt"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="yy"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="uu"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ii"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="oo"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="pp"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="aa"></td>
</tr>
</table> <td width="50%" align="center">
<input id="BtAdd" type="button" value="添加行" Class="Btn"/>
<input id="BtDel" type="button" value="删除行" Class="Btn"/>
</td>
</BODY>
</HTML>
如何实现添加行的name值自增?
tr.find("td").get(0).innerHTML 如何修改呢?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
<script type="text/javascript" language="javascript" src="jquery.js"></script>
<script type="text/javascript">
$(document).ready(function () {
//隐藏模板tr
//$("#tb tr").eq(2).hide();
var i = 1;
$("#BtAdd").click(function () {
//复制一行
var tr = $("#tb tr").eq(1).clone();
tr.find("td").get(0).innerHTML = ++i;
//此行错误
//tr.find("td").get(0).innerHTML ="<td style='text-align: center'>"+i+"</td><td><input id='CK"+i+"' type='checkbox' name='CK'/></td><td><INPUT class='INPUT' TYPE='text' NAME='qq"+i+"'></td>"; tr.show();
tr.appendTo("#tb");
});
$("#BtDel").click(function () {
$("#tb tr:gt(1)").each(function () {
if ($(this).find("#CK").get(0).checked == true) {
$(this).remove();
}
});
i = 1;
$("#tb tr:gt(1)").each(function () {
$(this).find("td").get(0).innerHTML = ++i;
});
$("#CKA").attr("checked", false);
});
$("#CKA").click(function () {
$("#tb tr:gt(1)").each(function () {
$(this).find("#CK").get(0).checked = $("#CKA").get(0).checked;
});
});
})
</script>
</HEAD> <BODY>
<table border="1" id="tb">
<tr>
<td style="text-align: center"></td>
<td><input id="CKA" name="CKA" type="checkbox"/></td>
<td>网名</td>
<td>博客</td>
<td>电邮</td>
<td>网络硬盘网络</td>
<td>QQ1</td>
<td>QQ2</td>
<td>QQ3</td>
<td>QQ4</td>
<td>QQ5</td>
<td>QQ6</td>
<td>QQ7</td>
</tr>
<tr>
<td style="text-align: center">1</td>
<td><input id="CK" type="checkbox" name="CK"/></td>
<td><INPUT class="INPUT" TYPE="text" NAME="qq"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ww"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ee"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="rr"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="tt"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="yy"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="uu"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="ii"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="oo"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="pp"></td>
<td><INPUT class="INPUT" TYPE="text" NAME="aa"></td>
</tr>
</table> <td width="50%" align="center">
<input id="BtAdd" type="button" value="添加行" Class="Btn"/>
<input id="BtDel" type="button" value="删除行" Class="Btn"/>
</td>
</BODY>
</HTML>
//隐藏模板tr
//$("#tb tr").eq(2).hide();
var i = 1;
$("#BtAdd").click(function () {
//复制一行
var tr = $("#tb tr").eq(1).clone();
tr.find("td").get(0).innerHTML = ++i;
var inputs = tr.get(0).getElementsByTagName("input");
for(var j = 0 ; j < inputs.length; j ++)
{
inputs[j].name = inputs[j].name+(i-1)
}
//此行错误
//tr.find("td").get(0).innerHTML ="<td style='text-align: center'>"+i+"</td><td><input id='CK"+i+"' type='checkbox' name='CK'/></td><td><INPUT class='INPUT' TYPE='text' NAME='qq"+i+"'></td>"; tr.show();
tr.appendTo("#tb");
});
$("#BtDel").click(function () {
$("#tb tr:gt(1)").each(function () {
if ($(this).find("#CK").get(0).checked == true) {
$(this).remove();
}
});
i = 1;
$("#tb tr:gt(1)").each(function () {
$(this).find("td").get(0).innerHTML = ++i;
});
$("#CKA").attr("checked", false);
});
$("#CKA").click(function () {
$("#tb tr:gt(1)").each(function () {
$(this).find("#CK").get(0).checked = $("#CKA").get(0).checked;
});
});
})
aspwebch 添加行测试已经没有问题了。发现中间删除了一行,name值得排序是不规则的,要怎么解决呢?
$("table tr:last").parent().append("<tr>"+$("table tr:last").html()+"</tr>").end().next().find("input").each(function(i){$(this).attr("name",$(this).attr("name")+i)})放到你的页面运行一下。
但是要实现让name累计并且是连续的优点困难,因为如果有添加一行或者删除一行都需要重新修改已有的name
恩,如果行太多,修改的name会也很多,不知道会不会影响速度。
测试不通过,继续求解。
删除操作如何改变name排序规则,按照name1,name2,name3排列
这个顺序对你有什么意义呢,重要的是能互相区别就可以了
如果不按照name1,2,3的顺序, 后台遍历中间的input会丢失。
最初的想法是,获取行数的总数,然后遍历循环input,再insert到数据。
或者各位有其他什么办法解决?
只要name各不相同,无论按何种顺序排列,都不可能遍历中丢失。
不同的顺序只是决定了遍历的顺序,不会决定哪些不被遍历