javascript - 单击时从输入中删除数字

标签 javascript jquery

关于这个问题 Remove one of the added lines on click

我现在希望在删除该行时更新总价。我意识到我需要使用与我在总价中添加数字时使用的类似的东西,但我不知道该怎么做。

简而言之,当我添加一行时,我希望将价格添加到总价中。当我删除它时,我希望从总价中减去已删除行上的数字。我需要一些帮助来了解如何从特定行访问 addPrice 和 addAmount 。

HTML

<div id="menu">
    <h3>Shopping list</h3>
    <div class="line">
        <p class="title">Amount</p>
        <p class="title">Product</p>
        <p class="title">Price</p>
        <div>
            <input class='amountInput' type='number' name='quantity' min='0' max='1000' step='1'>
            <input class='productInput' type="text" name="message" value="">
            <input class='priceInput' type='number' name='quantity' min='0' max='1000000' step='0.01'>
            <button class="food">Add</button>
        </div>
        <div class="messages">
        </div>
    </div>
</div>
<div class="totalPrice">
</div>

jQuery

$(document).ready(function() {
  var totalPrice = 0;
  $('.food').click(function() {
    var $frm = $(this).parent();
    var toAdd = $frm.children(".productInput").val();
    var addPrice = $frm.children(".priceInput").val();
    var addAmount = $frm.children(".amountInput").val();
    var div = $("<div>");
    div.append("<p>" + addAmount + "</p>", "<p id='product'> " + toAdd + " </p>", "<p>" + addPrice + "</p>", "<p class='delete'>" + "X" + "</p>");
    $frm.parent().children(".messages").append(div);
    totalPrice += addAmount * addPrice;
    $(".totalPrice").text("Total Price: $" + totalPrice);
  });
  $(document).on('click', '.delete', function() {
    $(this).closest("div").remove();
  });
});

最佳答案

从您要删除的行中获取价格和金额,然后从总计中减去它。

$(document).ready(function() {
  var totalPrice = 0;

  $('.food').click(function() {
    var $frm = $(this).parent();
    var toAdd = $frm.children(".productInput").val();
    var addPrice = $frm.children(".priceInput").val();
    var addAmount = $frm.children(".amountInput").val();

    var div = $("<div>");
    div.append("<p class='amount'>" + addAmount + "</p>", "<p class='product'> " + toAdd + " </p>", "<p class='price'>" + addPrice + "</p>", "<p class='delete'>" + "X" + "</p>");

    $frm.parent().children(".messages").append(div);

    totalPrice += addAmount * addPrice;

    $(".totalPrice").text("Total Price: $" + totalPrice);
  });

  $(document).on("click", ".delete", function() {
    var subAmount = parseFloat($(this).siblings(".amount").text());
    var subPrice = parseFloat($(this).siblings(".price").text());
    totalPrice -= subAmount * subPrice;
    $(".totalPrice").text("Total Price: $" + totalPrice);

    $(this).closest("div").remove();
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="menu">
  <h3>Shopping list</h3>
  <div class="line">
    <p class="title">Amount</p>
    <p class="title">Product</p>
    <p class="title">Price</p>
    <div>
      <input class='amountInput' type='number' name='quantity' min='0' max='1000' step='1'>
      <input class='productInput' type="text" name="message" value="">
      <input class='priceInput' type='number' name='quantity' min='0' max='1000000' step='0.01'>
      <button class="food">Add</button>
    </div>
    <div class="messages">
    </div>
  </div>
</div>
<div class="totalPrice">
</div>

我还为金额和价格元素分配了类,因此我不必在 DIV 中对它们的位置进行硬编码。

顺便说一句,您不应在行中使用 id='product',因为您正在创建具有相同 ID 的多个元素。 ID 应该是唯一的。我已将其更改为类。

关于javascript - 单击时从输入中删除数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37093999/

相关文章:

javascript - 如何将文本区域中的数据写入txt文件

javascript - toggleClass 只工作一次

JavaScript 可以在 IE 上运行,但不能在 Firefox 和 chrome 上运行

javascript - 隐藏 `prototype` 属性,避免通过自定义函数覆盖 native 函数

javascript - 使用 React Hooks 进行动态媒体查询

javascript - 如何转换字符串格式数据

jquery - 事件 Bootstrap 按钮

jquery - CSS:显示裁剪图像的预览

javascript - jQuery UI - 在外部单击时关闭对话框

javascript - AngularJS - 使用 $http 更新数组内的嵌套对象属性