【急】js动态增加了表单元素,但php代码中得不到
【急!求救!!!】js动态增加了表单元素,但php代码中得不到!
页面让用户填一些信息,因为数目不定,所以做了一个按钮,点一下就给table增加一行,input的名称使用name[]的形式,但提交后在php代码中得不到js增加的内容,name[]的内容只有一个,就是一开始写在页面中的那一行。
下面是代码
我已经换了几种形式去插入tr,但插入的内容在php代码都得不到。
我在php中直接输出post中的内容,不做任何处理,打印出来的name数组只有一个元素,点击按钮增加的tr中的内容都是没有。因此猜测是js插入的input元素没有被form识别到,因此提交的时候根本没有提交这些内容!
求解这个问题!
------解决思路----------------------
你可以单独开个页面 做个测试 动态用JS给页面增加一个input 用服务端的方式输出做个input看看 能不能拿到
------解决思路----------------------
------解决思路----------------------
input的type是text的可以获取数组吗?
你这个还是用另外一个hidden来传你的name然后在服务器上解析出来比较好
------解决思路----------------------
没看出什么问题,用firebug或者chrome开发人员工具看下动态添加的行在表单里面没有。。
------解决思路----------------------
用firebug看下你添加后的元素只要元素是在你表单里面,且最后没有覆盖那php后台是肯定会有的
仔细看看,看你这描述应该是动态添加的不在form里面
页面让用户填一些信息,因为数目不定,所以做了一个按钮,点一下就给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识别到,因此提交的时候根本没有提交这些内容!
求解这个问题!
------解决思路----------------------
你可以单独开个页面 做个测试 动态用JS给页面增加一个input 用服务端的方式输出做个input看看 能不能拿到
------解决思路----------------------
<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>
------解决思路----------------------
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>
------解决思路----------------------
没看出什么问题,用firebug或者chrome开发人员工具看下动态添加的行在表单里面没有。。
------解决思路----------------------
用firebug看下你添加后的元素只要元素是在你表单里面,且最后没有覆盖那php后台是肯定会有的
仔细看看,看你这描述应该是动态添加的不在form里面