繁体   English   中英

如何通过 ajax 设置相同输入字段但在不同行中的值

[英]how to set the value of same input filed but in different row through ajax

我有一个表格,我可以通过 jquery 创建一个新行。 我面临的问题是,当我 select 来自下拉列表的产品时,它必须将此产品的速率设置为下一列。 第一行做得很好。 但是当我创建新行和 select 产品时,它给出了正确的值,但在第一行的列上设置了值。 我不知道如何为相应的列设置值。 截屏

正如您在图片中看到的,我 select 是牛奶产品,它在我创建新行时将值设置为下一列,并将 select 产品设置为第一行的列。

function 的代码,返回产品的下拉值

function fill_unit_select_box($con)
{
    $output = '';
    $query = "SELECT * FROM `stock` INNER JOIN product ON stock.product_id = product.product_id
              WHERE stock.product_id = product.product_id ORDER BY product_name ASC";
    $query1=mysqli_query($con,$query);

    while($row=mysqli_fetch_array($query1))
    {
        $output .= '<option value="'.$row["product_id"].'">'.$row["product_name"].'</option>';
    }
    return $output;
}

通过 jquery 创建的表格代码

$(document).on('click', '.add', function(){
            var html = '';
            html += '<tr>';
            html += '<td><select name="item_name[]" onchange="product_id(this)" class="form-control item_name"><option value="">Select Unit</option><?php echo fill_unit_select_box($con); ?></select></td>';
            html += '<td><input type="text" disabled name="item_per_unit_price[]" id="product_price" class="form-control item_per_unit_price input" /></td>';
            html += '<td><input type="text" name="item_quentity[]"  class="form-control item_quentity input" /></td>';
            /*html += '<td><input type="text" name="item_total_price[]"  class="form-control item_total_price" /></td>';*/
            html += '<td><button type="button" name="remove" class="btn btn-danger btn-sm remove"><span class="glyphicon glyphicon-minus"></span></button></td></tr>';
            $('#item_table').append(html);
        });

onchange 代码 function 设置单位价格值

function product_id(str) {
        var id = str.value;
        $.ajax({
            type : "POST",
            url : "stock.php?page=stock_per_unit_price",
            data : {
                id:id
            },
          success: function (data) {
                console.log(data);
                $("#product_price").val(data);

            }
        });
    }

$("#product_price").val(data); 我不知道如何在不同行的同一列上设置值。

要在相应行中设置价格,需要将第二个参数传递给您的product_id() function 以识别当前行。 这可以像下面的例子一样完成:

 $(document).ready(function() { $(document).on("change", "select", function() { let value = $(this).val(); let row = $(this).closest("tr").index(); product_id(value, row); }); function product_id(value, row) { for (var k in dataset) { if (value == k) { let price = dataset[k]; $("tr:eq(" + row + ")").find(".product_price").val(price) } } } dataset = {"1": "10 €", "2": "20 €"} });
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <table> <tr> <td><select> <option value="">Select Unit</option> <option value="1">1</option> <option value="2">2</option> </select></td> <td><input class="product_price"/></td> </tr> <tr> <td><select> <option value="">Select Unit</option> <option value="1">1</option> <option value="2">2</option> </select></td> <td><input class="product_price"/></td> </tr> </table>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM