【问题标题】:Calculating subtotals using jquery使用 jquery 计算小计
【发布时间】:2017-01-13 11:16:49
【问题描述】:

如何从表单中相对于 $(this) 的输入字段获取(或写入)?

我希望遍历所有输入字段“antal”并根据“antal”乘以相对于“antal”的价格计算小计,并将计算出的价格存储在相对于“antal”的小计输入字段中。

这里有一支完整的笔http://codepen.io/Ktraving/pen/RKRGQG

$("input").change(function(){
    var subtot=0;
    var total=0;

    $("input[name=antal]").each(function(){                                             
       subtot = subtot + (parseInt($(this).val()) * $("input[name=pris]").val());
        $("input[name=subpris]").val(subtot);                                           
    });

    /* Totalling the subtotals */

    $("input[name=subpris]").each(function(){
        total = total + parseInt($(this).val());
    });

    $("input[name=totpris]").val(total);
});

【问题讨论】:

    标签: jquery forms input subtotal


    【解决方案1】:

    您可以使用closest() 上到父级,然后找到名称为pris/subpris 的相关输入:

    $(this).closest('div').find("input[name=pris]").val();
    

    注意: 不需要each() 只需计算当前输入antal 的小计,我建议在跟踪字段时使用input 而不是change .

    希望这会有所帮助。

    $(document).ready(function(){
      $("input[name='antal']").on('input', function(){
        var subtot=0;
        var total=0;
        var parent = $(this).closest('.maling_rekke');
        var pris = parent.find("input[name=pris]").val();
    
        subtot += parseInt($(this).val()) * pris;
        parent.find("input[name=subpris]").val(subtot);
    
        $("input[name=subpris]").each(function(){				
          total = total + parseInt($(this).val());			
        });
    
        $("input[name=totpris]").val(total);					
      });
    });
    /* Overordnet styling */
    * 
    {
      box-sizing:border-box;
      margin:0vw;
      padding:0vw;
    }
    
    fieldset
    {
      margin-bottom:20px;
      border-color:red;
      border-width:5px;
      background:#eee;
    }
    
    legend
    {
      margin-left:15px;
      padding:5px;
      font-size:20px;
      font-weight:bold;
    }
    
    /* Overordnet ramme, der på sigt kan benytte flexbox for at gøre formularen responsiv */
    
    .flex_ramme 
    {
      width: 500px;
      display: -webkit-flex;
      display: flex;
      flex-direction:column;
      background-color: white;
      margin:30px 30px 30px 30px;
    }
    
    
    /* Styling af formular og felter til formularen */
    
    
    .maling_rekke
    {
      padding:10px 0px 10px 10px;
      clear:both;
    }
    
    .maling_felt
    {
      padding:5px;
      max-width:80vw;
    }
    
    .maling_billede
    {
      height:100px;
    }
    
    .maling_ramme
    {
      float:left;
      min-width:130px;
      max-width:30vw;
      height:200px;
      padding-right:10px;
    }
    
    
    
    
    /* Styling af afsluttende knapper */
    
    .knapper
    {
      float:right;
    }
    
    #knap_nulstil
    {
      margin-right:20px;
      background-color: #CC3230; /* Green */
      border: none;
      color: white;
      padding: 15px 32px;
      text-align: center;
      text-decoration: none;
      display: inline-block;
      font-size: 16px;	
    }
    
    #knap_nulstil:hover
    {
      transition: background-color 0.8s ease;
      background-color:#ff3230;	
    }
    
    
    #knap_bestil
    {
      background-color: #4CAF50; 
      border: none;
      color: white;
      padding: 15px 32px;
      text-align: center;
      text-decoration: none;
      display: inline-block;
      font-size: 16px;
    }
    
    #knap_bestil:hover
    {
      transition: background-color 0.8s ease;
      background-color: #4CDF50; /* Green */
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    
    <div class="flex_ramme">
    
      <form action="send_bestilling.php" method="post">
    
        <fieldset>
    
          <legend>Bestilling af maling</legend>
    
          <div class="maling_rekke">
            <div class="maling_ramme">
              <img class="maling_billede maling_felt" src="spand.jpg" alt="Maling type A">
            </div>
            <p class="maling_type maling_felt">Sigma S2U Satin - slidstærk</p>
            <p class="maling_pris">100 kr.</p><input type="hidden" name="pris" value="100">
            <p class="maling_felt">Antal:</p> <input class="maling_input maling_felt" type="text" name="antal" value="0"><br>
            <p class="maling_felt">Subtotal (inkl. moms):</p> <input class="maling_sub maling_felt" type="text" name="subpris" value="0" readonly>
          </div>
    
          <div class="maling_rekke">
            <div class="maling_ramme">
              <img class="maling_billede maling_felt" src="spand2.jpg" alt="Maling type A">
            </div>
            <p class="maling_type maling_felt">Yunik Træmaling</p>
            <p class="maling_pris">200 kr.</p><input type="hidden" name="pris" value="200">			    	
            <p class="maling_felt">Antal:</p> <input class="maling_input maling_felt" type="text" name="antal" value="0"><br>
            <p class="maling_felt">Subtotal (inkl. moms):</p> <input class="maling_sub maling_felt" type="text" name="subpris" value="0" readonly>
          </div>
    
          <div class="maling_rekke">
            <div class="maling_ramme">
              <img class="maling_billede maling_felt" src="spand3.jpg" alt="Maling type A">
            </div>
            <p class="maling_type maling_felt">Yunik Radiatormaling</p>
            <p class="maling_pris">300 kr.</p><input type="hidden" name="pris" value="300">			    	
            <p class="maling_felt">Antal:</p> <input class="maling_input maling_felt" type="text" name="antal" value="0"><br>
            <p class="maling_felt">Subtotal (inkl. moms):</p> <input class="maling_sub maling_felt" type="text" name="subpris" value="10" readonly>
          </div>
    
        </fieldset>
    
        <fieldset>
    
          <legend>Godkendt bestilling</legend>
    
          <div class="maling_rekke">
            Total (inkl. moms): <input class="maling_totalt maling_felt" type="text" name="totpris" value="0" readonly> DKK.</br>
          <input class="maling_felt" type="checkbox" name="godkend" value="Bike">Jeg godkender hermed bestillingen<br>   	
          </div>
    
        </fieldset>
    
      <div class="knapper">
    
        <input id="knap_nulstil" type="reset" value="Nulstil">
        <input id="knap_bestil" type="submit" value="Send bestilling">
    
      </div>
    
      </form>
    
    </div> <!-- Slut anden flexramme -->

    【讨论】:

      猜你喜欢
      • 2012-11-04
      • 2011-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-05
      • 2012-02-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多