我有一个html文件,其中包含以下代码:
<input type="button" id="styles" value="Add More" onClick="addRow('data')" />
<form action="mail.php" method="post">
<table id="data"><tr><td>
<select name="selectorfirst" id="styles">
<option>Yellow</option>
<option>Green</option>
<option>Red</option>
</select>
</td>
<td>
<select name="selectorsecond" id="styles">
<option>375</option>
<option>1000</option>
<option>5000</option>
</select>
</td></tr></table>
<input id="styles" type="submit" value="Submit" />
</form>
我也有javascript,它可以通过按一个按钮来复制此表单(因此,例如,我可以有4个具有相同选项和ID的不同表单)。
function addRow(tableID) { var table = document.getElementById(tableID); }
按下按钮后,我需要在下一页的表单中发布这些值。我尝试了下面的代码,但是没有用。
<? $selectorfirst = $_POST['selectorfirst'];
$selectorsecond = $_POST['selectorsecond']; ?>
<table id="data">
<?php foreach($selector as $key => $value) { ?>
<tr>
<td ><?php echo $a+1; ?></td>
<td>
<input type="text" id="styles" name="selectorfirst[$key]" value="<?php echo $selectorfirst[$key]; ?>">
</td>
<td>
<input type="text" id="styles" name="selectorsecond[$key]" value="<?php echo $selectorsecond[$key]; ?>">
</td>
</tr><?php } ?></table>
答案 0 :(得分:1)
答案 1 :(得分:0)
您需要将数据提交为数组,如下所示:
array(3) {
[0]=> array(2) {
["first"]=> string(6) "Yellow"
["second"]=> string(3) "375"
}
[1]=> array(2) {
["first"]=> string(5) "Green"
["second"]=> string(4) "1000"
}
[2]=> array(2) {
["first"]=> string(3) "Red"
["second"]=> string(4) "5000"
}
}
每个数组元素都包含表行之一的数据。它们再次由具有第一和第二值的数组表示。在html中,它看起来像这样:
<td>
<select name="selector[0][first]" id="styles">
<option>Yellow</option>
<option>Green</option>
<option>Red</option>
</select>
</td>
<td>
<select name="selector[0][second]" id="styles">
<option>375</option>
<option>1000</option>
<option>5000</option>
</select>
</td>
通过在名称标签中添加方括号,这些值将存储为一个数组(名为selector
,在这种情况下,向第0个节点提交键first
和second
)
我写了一些快速而肮脏的JS函数,但这确实可以做到:
var counter = 0;
function addRow(tableID) {
var table = document.getElementById(tableID);
var tablerow = table.rows[0].innerHTML;
var tablerow = tablerow.replace(/name="selector\[\d+\]/g, 'name="selector['+ ++counter +']');
table.getElementsByTagName('tbody')[0].innerHTML += '<tr>' + tablerow + '</tr>';
}
简而言之,它将获取表的第一行,替换name
标签的索引,并将其作为新行添加到表中。
然后在mail.php中,获取$_POST['selector']
并遍历它:
<?php
$selector = $_POST['selector'];
?>
<table id="data">
<?php foreach($selector as $key => $value) { ?>
<tr>
<td ><?php echo $key; ?></td>
<td>
<input type="text" id="styles" name="selectorfirst[$key]" value="<?php echo $value['first']; ?>">
</td>
<td>
<input type="text" id="styles" name="selectorsecond[$key]" value="<?php echo $value['second']; ?>">
</td>
</tr>
<?php } ?>
</table>