作者susaku (小草)
看板PHP
标题[请益] 接收动态表单阵列的值
时间Sat Nov 5 16:35:32 2011
我在A.php写一个动态新增栏位 在B.php接收阵列写进资料库
不过不知道是JS写法有问题还是php阵列有问题 我只能接收第一个值= ="
可以请各位前辈帮我看看哪边有问题吗?
<A.php html部分>
<table border="0" cellspacing="1" width="100%" id="tb_2">
<tr><td align="left"><font size="4" face="标楷体" >计画目标(条列式)
</font></td></tr>
<tr><td><input type="text" name="text_2[]" id="2_1" /></td></tr>
</table>
<input type="button" name="button_+" id="2" value="+"
onClick="act_text(this)" />
<input type="button" name="button_-" id="2" value="-"
onClick="act_text(this)" />
<A.php JS部分>
<script language="JavaScript">
var i=2;
function act_text(obj) {
var num = document.getElementById("tb_"+obj.id).rows.length;
switch(obj.value){
case "+":
var Tr = document.getElementById("tb_"+obj.id).insertRow(num);
Td = Tr.insertCell(Tr.cells.length);
Td.innerHTML='<input type="text" name="text_"+obj.id+"[]"
id=obj.id+"_"+i />';
i++;
break;
case "-":
if(num >2) {
document.getElementById("tb_"+obj.id).deleteRow(-1);
}
i--;
break;
}
}
</script>
<B.php接收部分>
foreach($_POST['text_2'] as $i){
$text_2Value .= $i.',';
}
补充:因为A.php有很多要用到同样的动态表单,所以我JS根据按哪个Button (obj)来决定
新增的栏位是属於哪个table (tb_?)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 163.21.235.234
1F:→ tkdmaf:是「Java Script」不是「Java Server Pages」 11/05 17:51
Sorry~
※ 编辑: susaku 来自: 163.21.235.234 (11/05 21:26)
2F:→ averywu:ID不可重覆 11/05 23:47
後来搞了一下发现是下面这行的问题
<input type="text" name="text_"+obj.id+"[]" id=obj.id+"_"+i />
name只能接收确切的文字...就是我改写成
<input type="text" name="text_2[]" />
就可以完整接收到
(id我直接删掉了...似乎没有差别)
不过这样太限定name的名字就没办法让其它元件也使用这个function了.. >_<"
※ 编辑: susaku 来自: 163.21.235.234 (11/06 00:19)
呃....更新这麽多次真不好意思
最後改成
Td.innerHTML=
'<input type="text" name="text_
' +obj.id+
'[]" />
';
这样就可以了
※ 编辑: susaku 来自: 163.21.235.234 (11/06 00:31)
3F:→ MOONRAKER:我看了很久还是看不懂那个[]是什麽?我看来是一个框 11/06 17:28
4F:→ cokellen:name[] => array 11/06 18:49
5F:→ MOONRAKER:喔!对不起我问了一个蠢问题 XD 11/06 19:22
6F:→ MOONRAKER:以前碰到这种宁愿每一个想办法取序号名字也不要用阵列 11/06 19:23
7F:→ MOONRAKER:所以看到的时候完全状况外 11/06 19:23
8F:→ cokellen:刚开始会用这种命名方式,後来配合JS就不用这种方式了 11/06 20:46