简体   繁体   English

如何在重复的输入类型文本中添加金额并显示添加金额

[英]How to add amount in duplicated input type text and display added amount

I am trying to add duplicate amount value and display output in input text( get_amount ) which is when one clicks addmilistone button.我正在尝试添加重复的金额值并在输入文本( get_amount )中显示输出,这是单击addmilistone按钮时的结果。 For example;例如; When a user click add button, the field duplicates, and when the user enters the amount on both inputs its add and displays in input type text.当用户单击添加按钮时,该字段会复制,并且当用户在两个输入上输入金额时,其添加并显示在输入类型文本中。

Html The code below is being duplicate when the user clicks +addmilistone Html当用户点击+addmilistone时,下面的代码会重复

<div id="fieldset"  class="row">
 <div class="modal-body">
    <input type="button" class="btn btn-primary" id="addmilistone" value="+addmilistone"/>

      <div id="fieldset"  class="row">
      <div class="col-sm-4">
        <div class="form-group">
          <label for="m_description">Description</label>
          <input type="text" name="m_description" id="m_description" placeholder="milestone Description" class="form-control">
        </div>
      </div>
      <div class="col-sm-4">
        <div class="form-group">
          <label for="ddate">Due Date</label>
          <input type="date" name="ddate" id="ddate" class="form-control">
        </div>
      </div>
      <div class="col-sm-4">
        <div class="form-group">
          <label for="amount">Amount</label>
          <input type="text"  id="i_amount"  class="form-control">
        </div>
      </div>
    </div>
  </div>
</div>

Display Input type The code is where the calculation is being displayed when one input amount in input type id="i_amount" , that wether in a single row of inputs or duplicates.显示输入类型代码是当输入类型id="i_amount"一个输入金额时显示计算的地方,无论是在单行输入中还是重复。

  <input type="number" id="get_amount" class="form-control" name="">

Scripts脚本

This script is duplicating the row of inputs此脚本正在复制输入行

<script type="text/javascript">
  (function(){
    
    var button = document.getElementById("addmilistone");
    
    button.addEventListener("click", function() {
        var sourceNode = document.getElementById("fieldset");
        var node = duplicateNode(sourceNode, ["id", "name", "placeholder"]);
        
        sourceNode.parentNode.appendChild(node);
    }, false);

    
    var counter = 0;
    function duplicateNode(/*DOMNode*/sourceNode, /*Array*/attributesToBump) {
        counter++;
        var out = sourceNode.cloneNode(true);
        if (out.hasAttribute("id")) { out["id"] = bump(out["id"]); }
        var nodes = out.getElementsByTagName("*");
        
        for (var i = 0, len1 = nodes.length; i < len1; i++) {
            var node = nodes[i];
            for (var j = 0, len2 = attributesToBump.length; j < len2; j++) {
                var attribute = attributesToBump[j];
                if (node.hasAttribute(attribute)) {
                    node[attribute] = bump(node[attribute]);
                }
            }
        }
        
        function bump(/*String*/str) {
            return str + "_" + counter;
        }
      
        return out;
    }

})();

</script>
<script>
$('#i_amount').keyup(function(){
    $('#get_amount').val(this.value);
});
</script>

在此处输入图片说明

Do the calculation after the input is outof focus.. In your code u was just selecting the first input在输入失焦后进行计算..在您的代码中,您只是选择了第一个输入

Code代码

 (function () { var button = document.getElementById("addmilistone"); button.addEventListener("click", function () { var sourceNode = document.getElementById("fieldset"); var node = duplicateNode(sourceNode, ["id", "name", "placeholder"]); sourceNode.parentNode.appendChild(node); }, false); var counter = 0; function duplicateNode( /*DOMNode*/ sourceNode, /*Array*/ attributesToBump) { counter++; var out = sourceNode.cloneNode(true); if (out.hasAttribute("id")) { out["id"] = bump(out["id"]); } var nodes = out.getElementsByTagName("*"); for (var i = 0, len1 = nodes.length; i < len1; i++) { var node = nodes[i]; for (var j = 0, len2 = attributesToBump.length; j < len2; j++) { var attribute = attributesToBump[j]; if (node.hasAttribute(attribute)) { node[attribute] = bump(node[attribute]); } } } function bump( /*String*/ str) { return str + "_" + counter; } return out; } })(); $('#get_amount').val(0) $('body').on('focusout','[id^="i_amount"]',function () { var sum = Number($('#get_amount').val()); sum += Number($(this).val()); $('#get_amount').val(sum); });
 <link href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/css/bootstrap.min.css" rel="stylesheet" /> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/4.6.0/js/bootstrap.min.js"></script> <div class="container"> <div class="row"> <div class="row col-12"> <input type="button" class="btn btn-primary" id="addmilistone" value="+addmilistone" /> </div> <div id="fieldset" class="row"> <div class=" col-sm-4 "> <div class="form-group"> <label for="m_description">Description</label> <input type="text" name="m_description" id="m_description" placeholder="milestone Description" class="form-control"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label for="ddate">Due Date</label> <input type="date" name="ddate" id="ddate" class="form-control"> </div> </div> <div class="col-sm-4"> <div class="form-group"> <label for="amount">Amount</label> <input type="text" id="i_amount" class="form-control amount"> </div> </div> </div> </div> <div class="row"> <input type="number" id="get_amount" class="form-control" name=""> </div> </div> </div>

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

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