嗨,我想从表 A 中的项目列表中选择一个项目,它应该显示在表 B 中。之后,我想单击表 B 中的提交按钮以保存从表 A 中选择的项目。问题是我在表 A 中的每个项中放入一个年龄输入字段,但是当我尝试将其传递到表 b 时,它仅传递每个项中第一项的输入值,我怎样才能使输入字段唯一。这是我的代码
<?php
$data=array();
$i=0;
$notarray = DataDB::getInstance()->get_rows_from_field('inventory','branch_id',$branchid);
foreach($notarray as $row){
$data[$i]=$row;
$i++;
}
?>
<table class="table table-bordered datatable" id="table_export">
<thead>
<tr>
<th>#</th>
<th><div>name</div></th>
<th><div>surname</div></th>
<th><div>date</div></th>
<th><div>Age</div></th>
<th><div>action</div></th>
</tr>
</thead>
<tbody>
<?php
$i=0;
for ($i=0;$i<count($data);$i++) {
$item=$data[$i];
$count = 1;
?>
<tr>
<td><?php echo $count++;?></td>
<td><?php echo $item['name'];?></td>
<td><?php echo $item['surn'];?></td>
<td><?php echo $item['date']; ?></td>
<form method="post" action="" role="form">
<td>
<div class="form-group">
<div class="">
<input type="number" class="form-control" name="age" data-validate="required" data-message-required="Age required" autofocus>
</div>
</div>
</td>
<td>
<div class="btn-group">
<button type="submit" class="btn btn-primary" id="addb" name="save" onclick='addToList(<?php echo json_encode($item);?>);'>Add</button>
</div>
</td>
</form>
</tr>
<?php
}
?>
</tbody>
</table>
<br><br>
<div id="showToSave">
</div>
<script type="text/javascript">
var listToSave=[]; // must be global
var addToList= function(data){
var button = document.getElementById("addb"),
value = button.form.quantity+"Panadol".value;
data.quan = value;
var lenData=listToSave.length;
if(lenData>0){
//this is used to avoid duplicate
for(var j=1;j<lenData;j++){
if(data.id==listToSave[j].id) return;
}
}
listToSave.push(data);
console.log(listToSave);
document.getElementById('showToSave').innerHTML=createData(listToSave);
};
var createData= function (data) {
var len=data.length;
var tableToSave="<table class='table table-bordered datatable'><tr><td>Item</td> <td>Quantity</td> <td>Price</td> <td>Action</td></tr>";
var i;
for(i=0;i<len;i++){
content=data[i];
tableToSave += "<tr><td>"+content.item_name+"</td><td>"+content.quan+"</td><td>"+content.price+"</td><td>" +
"<button class='btn btn-danger' onclick='deleteFromSave("+i+")'>Delete</button></td></tr>";
}
tableToSave += "</table><div><button class='btn btn-success' onclick='saveData()' type='button'>Save</button></div>";
return tableToSave;
};
var deleteFromSave=function (index) {
listToSave.splice(index,1); //this is use to delete from list to save
document.getElementById('showToSave').innerHTML=createData(listToSave); //to rerender after delete
};
</script>
最佳答案
您应该附上id="age<?php echo $i ?>"
到你的年龄input
field 。
您可以通过index
以及data
在addToList
并检索年龄 input
字段值如下所示。
var addToList= function(data,i){
var button = document.getElementById("addb"),
value = button.form.quantity+"Panadol".value;
data.quan = value;
data.age = document.getElementById("age"+i).value;
var lenData=listToSave.length;
if(lenData>0){
//this is used to avoid duplicate
for(var j=1;j<lenData;j++){
if(data.id==listToSave[j].id) return;
}
}
listToSave.push(data);
console.log(listToSave);
document.getElementById('showToSave').innerHTML=createData(listToSave);
};
您的createData
功能将发生如下变化。
var createData= function (data) {
var len=data.length;
var tableToSave="<table class='table table-bordered datatable'><tr><td>Item</td> <td>Quantity</td> <td>Price</td><td>Age</td> <td>Action</td></tr>";
var i;
for(i=0;i<len;i++){
content=data[i];
tableToSave += "<tr><td>"+content.item_name+"</td><td>"+content.quan+"</td><td>"+content.price+"</td><td>"+content.age+"</td><td>" +
"<button class='btn btn-danger' onclick='deleteFromSave("+i+")'>Delete</button></td></tr>";
}
tableToSave += "</table><div><button class='btn btn-success' onclick='saveData()' type='button'>Save</button></div>";
return tableToSave;
};
我希望这有帮助。
关于javascript - 使每个表单输入字段都唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41527536/