【急!求救!!!】js动态增加了表单元素,但php代码中得不到!

sysmaid 2013-10-10 09:56:41
页面让用户填一些信息,因为数目不定,所以做了一个按钮,点一下就给table增加一行,input的名称使用name[]的形式,但提交后在php代码中得不到js增加的内容,name[]的内容只有一个,就是一开始写在页面中的那一行。
下面是代码

var newTr = document.createElement("tr");
var element = document.getElementById("addTable");
newTr.className = "shop_tr";
//element.appendChild(newTr);
//document.formCart.insertBefore(newTr, before);
var frm = document.getElementById("formCart");
var before = document.getElementById("addBefore");
var parinte = before.parentNode;
alert(parinte);
parinte.insertBefore(newTr, before);

//可行的写法,但页面位置就错乱了,因为没有被插入到table
document.formCart.insertBefore(nod);

var newTd0 = newTr.insertCell(0);
newTd0.innerHTML = '<input type="text" name="nogood_name[]" size="30" value="" />';
newTd0.className = "bacling_bottom bacling";

var newTd1 = newTr.insertCell(1);
newTd1.innerHTML = '<input type="text" name="nogood_number[]" value="" />';
newTd1.className = "bacling_bottom bacling";

var newTd2 = newTr.insertCell(2);
newTd2.innerHTML = '<input type="text" name="nogood_guige[]" value="" />';
newTd2.className = "bacling_bottom bacling";

var newTd3 = newTr.insertCell(3);
newTd3.innerHTML = '<input type="text" name="nogood_price[]" value="" />';
newTd3.className = "bacling_bottom bacling";

var newTd4 = newTr.insertCell(4);
newTd4.innerHTML = ' <input type="hidden" name="nogood_recid[]" value="0" />';
newTd4.className = "bacling_bottom bacling";

我已经换了几种形式去插入tr,但插入的内容在php代码都得不到。

var_dump($_POST);

我在php中直接输出post中的内容,不做任何处理,打印出来的name数组只有一个元素,点击按钮增加的tr中的内容都是没有。因此猜测是js插入的input元素没有被form识别到,因此提交的时候根本没有提交这些内容!
求解这个问题!
...全文
181 点赞 收藏 14
写回复
14 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
sysmaid 2015-01-29
事情过去好久了,一直没来结贴,已经忘记这个问题是怎么解决的。 来说声谢谢!
回复
blackant2 2013-10-10

<html>
<head>
<script type="text/javascript">
function addrow(){
var tab=document.getElementById('cartTable');
var tr=tab.insertRow();
var td=tr.insertCell();
td.innerHTML="<input name='name["+tab.rows.length+"]' value='raw"+tab.rows.length+"'>"
}
</script>
</head>
<body>
<form>
<table id='cartTable'>
<tr><td><input name='name[0]' value='raw'></td></tr>
</table>
<input type='button' value='add row' onclick='javascript:addrow()'>
<input type='submit'>
</form>
</body>
</html>


回复
sysmaid 2013-10-10
引用 5 楼 rui888 的回复:
[quote=引用 3 楼 jtczhouxiang 的回复:] 因为你是 动态追加的 所以取不到东西
添加是可以取到的。应该是写法问题。[/quote] 嗯,你给的链接中帖子里他是没写name,我可没犯这个低级错误。
回复
「已注销」 2013-10-10
引用 6 楼 jtczhouxiang 的回复:
[quote=引用 4 楼 sysmaid 的回复:] [quote=引用 3 楼 jtczhouxiang 的回复:] 因为你是 动态追加的 所以取不到东西
那请指点下,这种需求还有什么办法实现?[/quote] 使用服务端方式获取 是无法拿到东西的 你只能submit到服务端 你可以提交当前页 然后在做处理 试试[/quote] 你可以单独开个页面 做个测试 动态用JS给页面增加一个input 用服务端的方式输出做个input看看 能不能拿到
回复
「已注销」 2013-10-10
引用 4 楼 sysmaid 的回复:
[quote=引用 3 楼 jtczhouxiang 的回复:] 因为你是 动态追加的 所以取不到东西
那请指点下,这种需求还有什么办法实现?[/quote] 使用服务端方式获取 是无法拿到东西的 你只能submit到服务端 你可以提交当前页 然后在做处理 试试
回复
兔子托尼啊 2013-10-10
引用 3 楼 jtczhouxiang 的回复:
因为你是 动态追加的 所以取不到东西
添加是可以取到的。应该是写法问题。
回复
sysmaid 2013-10-10
引用 3 楼 jtczhouxiang 的回复:
因为你是 动态追加的 所以取不到东西
那请指点下,这种需求还有什么办法实现?
回复
「已注销」 2013-10-10
因为你是 动态追加的 所以取不到东西
回复
sysmaid 2013-10-10
引用 1 楼 blackant2 的回复:
input name="nogood_name[]" ==> input name="nogood_name[js-var-row-index]"
试过,没有用! 所以我才说是不是js增加的这些内容没有进入form。
回复
blackant2 2013-10-10
input name="nogood_name[]" ==> input name="nogood_name[js-var-row-index]"
回复
冰糖-雪梨 2013-10-10
用firebug看下你添加后的元素只要元素是在你表单里面,且最后没有覆盖那php后台是肯定会有的 仔细看看,看你这描述应该是动态添加的不在form里面
回复
没看出什么问题,用firebug或者chrome开发人员工具看下动态添加的行在表单里面没有。。
回复
晓敬 2013-10-10
input的type是text的可以获取数组吗? 你这个还是用另外一个hidden来传你的name然后在服务器上解析出来比较好

<div id='textcollection'>
<input type='text' name='add1'/>
<input type='text' name='add2'/>
<input type='hidden' value='1|2'/>
</div>
回复
我的波塞冬 2013-10-10
学习一下
回复
相关推荐
发帖
JavaScript
创建于2007-09-28

8.5w+

社区成员

Web 开发 JavaScript
申请成为版主
帖子事件
创建了帖子
2013-10-10 09:56
社区公告
暂无公告