javascript - 使每个表单输入字段都唯一

标签 javascript php mysql

嗨,我想从表 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以及dataaddToList并检索年龄 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/

相关文章:

php - 触发 SQL 查询或在 php 中处理结果哪个更好?

mysql 'Rlike' 无法正常工作

javascript检查if语句中的多个条件

javascript - 如何将函数绑定(bind)到 URL 查询字符串的更改,而不是 hashchange

php - 如何将值插入MySQL表的特定空白列?

MySql 使用连接时是否绝对需要使用带有列名的表别名?

php - mysql - 在 sql 中选择 UNTIL

javascript - 如何通过 javascript 从 CSS 类获取样式属性 ime-mode?

javascript - 计算选中复选框的总和

php - Laravel 使用 Eloquent Where 子句访问外键