jQuery:如何使用onchange更新输入值?

时间:2018-12-04 14:44:36

标签: javascript jquery html

我为我的订单页面创建了一个折扣函数,默认情况下,当product quantity1时,我的订单页面上存在一个问题,然后在Final textbox中正确显示折扣率,但是当我更改Quantity, like 1 to 2,3,4,5..时,我的代码将不起作用,显示的金额将不包含discount rate。 我尝试解决此问题,但我不知道错误在哪里以及如何解决。

下面是我正在使用的代码,请帮忙并告诉我如何正确设置。

您的帮助将不胜感激。

谢谢!

function getTotal(row = null) {
    if(row) {
      var disc = $('#dis_1').val();//
      var dec = (disc/100).toFixed(2);  //
      var total = Number($("#rate_value_"+row).val()) * Number($("#qty_"+row).val()) * dec;
      //total = total.toFixed(2);
      var rate = Number($("#rate_value_"+row))-total;
      total = total.toFixed(2);
      $("#amount_"+row).val(total);
      $("#amount_value_"+row).val(total);
      
      subAmount();

    } else {
      alert('no row !! please refresh the page');
    }
  }

//**---**/


  //*---*//
  
  // get the product information from the server
  function getProductData(row_id)
  {
    var product_id = $("#product_"+row_id).val();    
    if(product_id == "") {
      $("#rate_"+row_id).val("");
      $("#rate_value_"+row_id).val("");

      $("#qty_"+row_id).val("");           

      $("#amount_"+row_id).val("");
      $("#amount_value_"+row_id).val("");

    } else {
      $.ajax({
        url: base_url + 'orders/getProductValueById',
        type: 'post',
        data: {product_id : product_id},
        dataType: 'json',
        success:function(response) {
          // setting the rate value into the rate input field
          
          $("#rate_"+row_id).val(response.price); 
          $("#rate_value_"+row_id).val(response.price);

          $("#dis_"+row_id).val(response.discount);
          $("#dis_value_"+row_id).val(response.discount);
          
          $("#qty_"+row_id).val(1);
          $("#qty_value_"+row_id).val(1);

          //DISCOUNT      
        
          var disc = $('#dis_1').val();
          var dec = (disc/100).toFixed(2);   
          var total = Number(response.price) * dec;
          var rate = Number(response.price)-total;
          total = rate.toFixed(2);
          $("#amount_"+row_id).val(total);
          $("#amount_value_"+row_id).val(total);
          subAmount();
        } // /success
      }); // /ajax function to fetch the product data 
    }
  }

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <td><input type="text" name="qty[]" id="qty_1" class="form-control" required onkeyup="getTotal(1)" placeholder="Quantity"></td>
    <td>
    <input type="text" name="rate[]" id="rate_1" class="form-control" autocomplete="off" placeholder="Rate">
    </td>
    <td>
    <input type="text" placeholder="Discount" name="dis[]" id="dis_1" class="form-control" autocomplete="off">
    </td>
    <td>
    <input type="text" placeholder="Total Price" name="amount[]" id="amount_1" class="form-control" autocomplete="off">
    </td>
  

我正在使用数据库来获取商品实际价格,折扣之类的金额。

1 个答案:

答案 0 :(得分:1)

在您的HTML行中

    <td><input type="text" name="qty[]" id="qty_1" class="form-control" required onkeyup="getTotal(1)" placeholder="Quantity"></td>

您总是以1的值调用getTotal,我想您想改为在调用getTotal函数时获取文本框的值,并将其用作您的 row 值。在jquery中,您可以通过以下方式获取框的值:

row = $("#qty").val()