javascript - 如何将我的代码从 jquery 中的输入复选框行更改为可点击行?

标签 javascript jquery html

我有一个表,表中的数据来自数据库。我想单击此行并将其传输到其他表。我可以使用输入复选框传输这一行。我意识到只需单击它而无需复选框即可轻松方便地传输行。我很难将其转换为可点击而不是复选框。

我试过使用这段代码

$(document).ready(function() {
    $( "#table1 tbody tr" ).on( "click", function( event ) {
        var product = $(this).attr('data-product');
        var price = $(this).attr('data-price');
        var barcode = $(this).attr('data-barcode');
        var unit = $(this).attr('data-unt');
        var qty = prompt("Enter number of items",1);
        var total = qty*price;

        $('#tableData').append("<tr><td>"+barcode+"</td><td>"+product+"</td><td>₱"+price+"</td><td>"+unit+"</td><td>"+qty+"</td><td>₱"+total+"</td><tr>");});

这是我想转换成可点击代码的 jquery。

    function add(){
         $('input:checked[name=tab1]').each(function() {
         var product = $(this).attr('data-product');
         var price = $(this).attr('data-price');
         var barcode = $(this).attr('data-barcode');
         var unit = $(this).attr('data-unt');
         var qty = prompt("Enter number of items",1);
         var total = qty*price;

         $('#tableData').append("<tr><td>"+barcode+"</td><td>"+product+"</td><td>₱"+price+"</td><td>"+unit+"</td><td>"+qty+"</td><td>₱"+total+"</td><tr>"); });}

我的 PHP 代码。

<?php
include('server/connection.php');

if (isset($_POST['products'])){

    $name = mysqli_real_escape_string($db,$_POST['products']);
    $num = 1;
    $show   = "SELECT * FROM products WHERE product_name LIKE '$name%' ";
    $query  = mysqli_query($db,$show);
    if(mysqli_num_rows($query)>0){
        while($row = mysqli_fetch_array($query)){
            $total = $num*$row['sell_price'];
            echo "<tr id='sas'><td>".$row['id']."</td><td>".$row['product_name']."</td>";
            echo "<td>₱".$row['sell_price']."</td>";
            echo "<td>".$row['unit']."</td>";
            echo "<td>".$row['quantity']."</td>";
            echo "<td><input type='checkbox' name='tab1' data-barcode='".$row['id']."' data-product='".$row['product_name']."' data-price='".$row['sell_price']."' data-unt='".$row['unit']."' data-qty='".$num."' data-total='".$total."'/></td></tr>";
        }
    }
    else{
        echo "<td></td><td>No Products found!</td><td></td>";
    }
}

我的 table

<table id="table1">
   <thead>
      <tr>
         <td>Barcode</td>
         <td>Product Name</td>
         <td>Price</td>
         <td>Unit</td>
         <td>Stocks</td>
         <td>Action</td>
      </tr>
   </thead>
   <tbody id="products">
   </tbody>
</table>
<table id="table2">
   <thead>
      <tr>
         <th>Barcode</th>
         <th>Description</th>
         <th>Price</th>
         <th>Unit</th>
         <th>Qty</th>
         <th>Sub.Total</th>
      </tr>
   </thead>
   <tbody id="tableData">
   </tbody>
</table>

我希望只需单击该行,它就会自动传输到 table2,并使用提示询问产品数量的对话框,然后它将与整行一起打印到第二个表。

这是我的带有 CSS 的 UI。 enter image description here

enter image description here

最佳答案

您的方法是正确的,只需使用 $(this) 修复 JS 选择器并格式化价格...

$("#table1 .js-add").on("click", function() {
    var target = $(this);
    var product = target.attr('data-product');
    var price = target.attr('data-price');
    var barcode = target.attr('data-barcode');
    var unit = target.attr('data-unt');
    var qty = prompt("Enter number of items", 1);
    var total = qty * price;
       
    $('#tableData').append("<tr><td>" + barcode + "</td><td>" + product + "</td><td>" + price + "</td><td>" + unit + "</td><td>" + qty + "</td><td>" + total.toFixed(2) + "</td><tr>");
  });
<link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>

<table id="table1" class="table">
  <thead>
    <tr>
      <th>Barcode</th>
      <th>Product Name</th>
      <th>Price</th>
      <th>Unit</th>
      <th>Stocks</th>
      <th>Action</th>
    </tr>
  </thead>
  <tbody id="products">
    <tr>
      <td>123412</td>
      <td>Test</td>
      <td>12.99</td>
      <td>1</td>
      <td>10</td>
      <td>
        <input name='tab1' type="checkbox" class='js-add' data-barcode="123412" data-product="Test" data-price="12.99" data-unt="1"/>
      </td>
    </tr>
  </tbody>
</table>

<br>

<table id="table2" class="table">
  <thead>
    <tr>
      <th>Barcode</th>
      <th>Description</th>
      <th>Price</th>
      <th>Unit</th>
      <th>Qty</th>
      <th>Sub.Total</th>
    </tr>
  </thead>
  <tbody id="tableData">
  </tbody>
</table>

关于javascript - 如何将我的代码从 jquery 中的输入复选框行更改为可点击行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54647951/

相关文章:

javascript - 透明渐变菜单

jQuery 切换标签内容

javascript - 根据我在同一行中选择的选项禁用输入,所有行都相同

javascript - 快速播放声音

javascript - jQuery之前无法对html进行clone()和appendTo()

javascript - 将对象数组从 JavaScript 发送到 C# Controller

javascript - 如何使用 Javascript 访问 memcached?

用于表示海量数据的 Javascript 网格

javascript - 在没有 jQuery 的情况下获取 Canvas 中的光标位置

javascript - 更改动态表 AngularJS/JavaScript 中文本的颜色