【发布时间】:2022-01-01 11:48:43
【问题描述】:
我对此很接近,我知道,向表中添加新行的 jquery 运行良好,但是当提交表单时,我只从第一行获取输入值(每行都有一些输入) .我无法弄清楚为什么其余的行,无论存在多少行,都没有在数组中被拾取。
Js:
//add rows
$("#addrow").click(function(){
i=1;
var row = '<tr>'
+ '<td><input type="checkbox" name="record[]" style="margin:0 10px 0 -15px"></td>'
+ '<td><input class="form-control" type="number" name="partid[]" id="pid'+i+'"></td>'
+ '<td><input class="form-control" type="number" min="1" step="1" name="partqty[]" id="pqty'+i+'" placeholder="Qty"></td>'
+ '<td><input class="form-control" type="number" min="0.0001" step="0.0001" name="partlength[]" id="pqty'+i+'" placeholder="Length"></td>'
+ '</tr>';
i++;
$("#partstable").append(row);
});
形式:
<input type="button" class="btn btn-dark" id="addrow" value="Add Row">
<table id="partstable" style="padding:15px;margin:15px;">
<thead>
<tr>
<th></th>
<th></th>
<th>Qty</th>
<th>Length</th>
</tr>
</thead>
<tbody>
<form action="index.php" method="post">
<tr>
<td><input type="checkbox" name="record[]" style="margin:0 10px 0 -15px"></td>
<td><input class="form-control" type="number" name="partid[]" id="pid[]"></td>
<td><input class="form-control" type="number" min="1" step="1" name="partqty[]" id="pqty[]" placeholder="Qty"></td>
<td><input class="form-control" type="number" min="0.0001" step="0.0001" name="partlength[]" id="pqty[]" placeholder="Length"></td>
</tr>
</tbody>
</table>
<button type="button" class="btn btn-dark delete-row">Delete Row</button>
<input name="submit" class="btn btn-success" type="submit" value="Submit">
</form>
我希望看到所有行,无论下面数组中可用的数量如何,但无论我尝试什么,我都只会得到第一行...
<?php
if(isset($_POST['submit'])){
foreach($_POST['partid'] as $partid){
$partid = $_POST['partid'];
print_r($partid);
$partqty = $_POST['partqty'];
print_r($partqty);
$partlength = $_POST['partlength'];
print_r($partlength);
}
}
?>
【问题讨论】:
-
您的 HTML 无效。
<tbody>内不能有<form>。 -
<form>需要包裹整个<table> -
@ohgodpleasehelpme 你愿意接受任何人的帮助,还是只接受上帝的帮助?
-
谢谢@Barmar
-
我认为您的问题也出在您的 PHP 代码中,您在循环中覆盖了 foreach
$partid的变量,这就是为什么您看不到其他值的原因,请更改$partid不覆盖变量。
标签: javascript php jquery