javascript - 使用 jQuery 通过动态 HTML 输入字段将商品总数量计算为商品价格

标签 javascript jquery html

我想使用 jQuery 计算商品价格乘以商品数量的总和。一旦输入金额,我就会使用动态 HTML 输入字段,它应该根据数量计算并给出总金额。请看下面的代码

我的 HTML 代码

$(document).ready(function() {
    var max_fields      = 10; //maximum input boxes allowed
    var wrapper         = $(".add_new_field"); //Fields wrapper
    var add_button      = $(".add_another_product"); //Add button ID
    
    var x = 1; //initlal text box count
    $(add_button).click(function(e){ //on add input button click
        e.preventDefault();
        if(x < max_fields){ //max input box allowed
            x++; //text box increment
            $(wrapper).append('<div class="add_new_field"><div class="row"><div class="col-md-4"><div class="form-group"><label class="col-form-label"> Enter Product Name</label><input type="text" class="form-control" name="pname[]" placeholder="Product Name"  tabindex="1"/></div></div><div class="col-md-4"><div class="form-group"><label class="col-form-label"> No. of Pieces</label><input type="text" class="form-control" name="pcount[]" placeholder="Product Inventory" tabindex="2" /></div></div><div class="col-md-3"><div class="form-group"><label class="col-form-label"> Estimated Amount</label><input type="text" class="form-control" name="estamount[]" placeholder="Product Inventory" tabindex="2" /></div><p>Amount: <span id="Amount"></span></p></div><a href="#" class="remove_field"><i class="fa fa-remove"></i></a></div></div>'); //add input box
        }
    });
    
    $(wrapper).on("click",".remove_field", function(e){ //user click on remove text
        e.preventDefault(); $(this).parent('div').remove(); x--;
    })
});

$('#EstmTotal').blur(function() {

  $('.add_new_field').each(function() {
    $(this).find('#Amount').html($('#PCount(0)', this).val() * $('#EstmTotal(0)', this).val());
  });

});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="add_new_field">
  <div class="row">
    <div class="col-md-4">
      <div class="form-group">
        <label class="col-form-label"> Enter Product Name</label>
        <input type="text" class="form-control" name="pname[]" id="PName" placeholder="Product Name" />
      </div>
    </div>

    <div class="col-md-4">
      <div class="form-group">
        <label class="col-form-label"> No. of Pieces</label>
        <input type="text" class="form-control" name="pcount[]" id="PCount" placeholder="No.Of Items" />
      </div>
    </div>

    <div class="col-md-3">
      <div class="form-group">
        <label class="col-form-label"> Estimated Amount</label>
        <input type="text" class="form-control" name="estamount[]" id="EstmTotal" placeholder="Estimated Amount of Each" />
      </div>
      <p>Amount: <span id="Amount"></span></p>
    </div>
    <!--<div class="col-md-1 removebtn"><a href="#" class="remove_field"><i class="fa fa-remove"></i></a></div>-->

  </div>
</div>

<button class="add_another_product">Add another Product <i class="fa fa-plus"></i></button>

请查看图片以更好地理解问题 enter image description here

总有一个可供讨论的选项

最佳答案

这里有完整的代码,请尝试一下。它会根据您的要求工作。

<!DOCTYPE html>
<html>
<head>
    <title>Demo</title>
    <script
  src="https://code.jquery.com/jquery-3.3.1.min.js"
  ></script>
<script type="text/javascript">
    function calculate(id){ console.log(id);
        // $('#EstmTotal').on('blur',function(){
        $(id).parents('.add_new_field').each(function() {
            var count = $(this).find("#PCount").val();
            var amount = $(this).find("#EstmTotal").val();
            $(this).find('#Amount').html(count*amount);
        });

    // });
    }
    $(document).ready(function(){

        $(".add_another_product").on('click',function(){
            var html = '<div class="add_new_field">';
                html += '<div class="row">'; 
                html += '<div class="col-md-4">';
                html += '<div class="form-group">';    
                html += '<label class="col-form-label"> Enter Product Name</label>';
                html += '<input type="text" class="form-control" name="pname[]" id="PName" placeholder="Product Name"/></div></div>';
                html += '<div class="col-md-4"><divclass="form-group"><label class="col-form-label"> No. of Pieces</label>';
                html += '<input type="text" class="form-control" name="pcount[]" id="PCount" placeholder="No.Of Items"/>';
                html += '</div></div>';

                html += '<div class="col-md-3">';
                html += '<div class="form-group">';    
                html += '<label class="col-form-label"> Estimated Amount</label><input type="text" class="form-control" name="estamount[]" id="EstmTotal" placeholder="Estimated Amount of Each" onblur="calculate(EstmTotal)" />';
                html += '</div><p>Amount: <span id="Amount"></span></p></div>'; 
                html += '</div></div>';
            $(this).before(html);
        })
    })  
</script>
</head>
<body>
    <div class="add_new_field"> 
            <div class="row"> 
                <div class="col-md-4">
                    <div class="form-group">    
                        <label class="col-form-label"> Enter Product Name</label>
                        <input type="text" class="form-control" name="pname[]" id="PName" placeholder="Product Name"/>
                    </div>
                </div> 

                <div class="col-md-4">
                    <div class="form-group">    
                        <label class="col-form-label"> No. of Pieces</label>
                        <input type="text" class="form-control" name="pcount[]" id="PCount" placeholder="No.Of Items"/>
                    </div>
                </div> 

                <div class="col-md-3">
                    <div class="form-group">    
                        <label class="col-form-label"> Estimated Amount</label>
                        <input type="text" class="form-control" name="estamount[]" id="EstmTotal" onblur="calculate(EstmTotal)" placeholder="Estimated Amount of Each"/>
                    </div>
                    <p>Amount: <span id="Amount"></span></p>
                </div> 
                <!--<div class="col-md-1 removebtn"><a href="#" class="remove_field"><i class="fa fa-remove"></i></a></div>-->

               </div>
            </div>

            <button class="add_another_product">Add another Product <i class="fa fa-plus"></i></button>

</body>
</html>

关于javascript - 使用 jQuery 通过动态 HTML 输入字段将商品总数量计算为商品价格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51893338/

相关文章:

javascript - 如何定位具有相同ID的div

javascript - 自动对焦需要刷新才能工作

javascript - knockout : Update to Text box value is not updating the observable item

Javascript/Jquery 从 &lt;input&gt; 和 <datalist> 转到 URL

javascript - 为 IE8 添加动态 'filter' CSS 属性未正确分配

javascript - 调用 JavaScript 函数时如何阻止网页滚动到顶部?

javascript - 复选框状态需要显示或隐藏一个 div

javascript - Google Chrome 上的 ReferenceError 但 Firefox 上没有(浏览器错误?)

javascript - 单击按钮时获取按钮上标签的值

javascript - Angular : use a variable into <div>