2016-06-22 6 views
0

Hello Stackoverflow Coders。私はこのコードをオンラインでダウンロードし、各製品に数量を追加したいと考えています。 私が欲しいのは、ユーザーが 個の商品を選択するたびに数量ごとに複数の商品価格を表示できるようにすることです。価格によって数を掛けてそれぞれの結果を表示し、数値に応じてすべての計算を合計します。 選択された製品アイテムのおかげjquery/javascriptを使用してリアルタイムでフォームの値を掛け合わせて合計する方法

ソース:http://viralpatel.net/blogs/sum-html-textbox-values-using-jquery-javascript/

<html> 
    <head> 
     <title>Sum Html Textbox Values using jQuery/JavaScript</title> 
     <style> 
      body { 
       font-family: sans-serif; 
      } 
      #summation { 
       font-size: 18px; 
       font-weight: bold; 
       color:#174C68; 
      } 
.txt { 
       background-color: #FEFFB0; 
       font-weight: bold; 
       text-align: right; 
      } 
     </style> 
     <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 
    </head> 
    <body> 
<table width="300px" border="1" style="border-collapse:collapse;background-color:#E8DCFF"> 

<th>no</th> 
<th>product</th> 
<th>price</th> 
<th>quantity</th> 

<tr> 
     <td width="40px">1</td> 
     <td>Butter</td> 
     <td><input class="txt" type="text" name="txt" value="500" /></td> 
<td><select name="qty" class="txt" /> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select></td> 
    </tr> 

    <tr> 


     <td>2</td> 
     <td>Cheese</td> 
     <td><input class="txt" type="text" name="txt" value="250"/></td> 
<td><select name="qty" class="txt" /> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select></td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>Eggs</td> 
     <td><input class="txt" type="text" name="txt" value="400"/></td> 
<td><select name="qty" class="txt" /> 
<option value="0">0</option> 
<option value="1">1</option> 
<option value="2">2</option> 
<option value="3">3</option> 
</select></td> 
    </tr> 

    <tr id="summation"> 
     <td>&nbsp;</td> 
     <td align="right">Sum :</td> 
     <td align="center"><span id="sum">0</span></td> 

    </tr> 
</table> 

<script> 
    $(document).ready(function(){ 

     //iterate through each textboxes and add keyup 
     //handler to trigger sum event 
     $(".txt").each(function() { 

      $(this).keyup(function(){ 
       calculateSum(); 
      }); 
     }); 

    }); 

    function calculateSum() { 

     var sum = 0; 
     //iterate through each textboxes and add the values 
     $(".txt").each(function() { 

      //add only if the value is number 
      if(!isNaN(this.value) && this.value.length!=0) { 
       sum += parseFloat(this.value); 
      } 

     }); 
     //.toFixed() method will roundoff the final sum to 2 decimal places 
     $("#sum").html(sum.toFixed(2)); 
    } 
</script> 
</body> 
</html> 

答えて

0

これは

<table width="300px" border="1" style="border-collapse:collapse;background-color:#E8DCFF"> 
    <th>no</th> 
    <th>product</th> 
    <th>price</th> 
    <th>quantity</th> 
    <tr> 
     <td width="40px">1</td> 
     <td>Butter</td> 
     <td><input class="txt" type="text" name="txt" value="500" /></td> 
     <td> 
     <select name="qty" class="qty-txt" /> 
      <option value="0">0</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td>2</td> 
     <td>Cheese</td> 
     <td><input class="txt" type="text" name="txt" value="250"/></td> 
     <td> 
     <select name="qty" class="qty-txt" /> 
      <option value="0">0</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
     </select> 
     </td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>Eggs</td> 
     <td><input class="txt" type="text" name="txt" value="400"/></td> 
     <td> 
     <select name="qty" class="qty-txt" /> 
      <option value="0">0</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
     </select> 
     </td> 
    </tr> 
    <tr id="summation"> 
     <td>&nbsp;</td> 
     <td align="right">Sum :</td> 
     <td align="center"><span id="sum">0</span></td> 
    </tr> 
</table> 

以下のようなあなたのhtmlとjsの中にいくつかのマイナーな変更が必要とHTMLのようにいくつかの変更で

$("select").on("change",function(){ 

    var sum = 0; 

    //iterate through each select and multiply the values 
    $("select").each(function(){ 
     thisID = $(this).attr("id").replace("-qty","-price"); 

     sum = sum + (parseInt($(this).val()) * parseInt($("#"+thisID).val())); 
    }); 

    //.toFixed() method will roundoff the final sum to 2 decimal places 
    $("#sum").html(sum.toFixed(2)); 
}); 

JSコード:

$(document).ready(function() { 

    $(".txt").keyup(function() { 
     calculateSum(); 
    }); 

    $('.qty-txt').on('change', function() { 
     calculateSum(); 
    }); 

}); 

function calculateSum() { 

    var sum = 0; 
    //iterate through each textboxes and add the values 
    $(".txt").each(function() { 

     //add only if the value is number 
     if (!isNaN(this.value) && this.value.length != 0) { 
      //check cooresponding quantity 
      var qty = $(this).parents('tr').find('.qty-txt').val(); 
      sum += (parseFloat(this.value) * parseInt(qty, 10)); 
     } 

    }); 
    //.toFixed() method will roundoff the final sum to 2 decimal places 
    $("#sum").html(sum.toFixed(2)); 
} 

fiddleへのリンク。

+0

ajaxコールを介して合計金額を含むフォーム結果を提出する方法をご存知ですか?私はPHPの部分を感謝することができます – nackolysis

0

それはより次のようになります。

を関連する価格を見つけるために<select> IDを使用して。フィドルで

<table width="300px" border="1" style="border-collapse:collapse;background-color:#E8DCFF"> 

<th>no</th> 
<th>product</th> 
<th>price</th> 
<th>quantity</th> 

<tr> 
    <td width="40px">1</td> 
    <td>Butter</td> 
    <td><input type="text" id="butter-price" class="txt" value="500"></td> 
    <td><select id="butter-qty" class="txt"> 
     <option value="0">0</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     </select></td> 
</tr> 

<tr> 
    <td>2</td> 
    <td>Cheese</td> 
    <td><input type="text" id="cheese-price" class="txt" value="250"></td> 
    <td><select id="cheese-qty" class="txt"> 
     <option value="0">0</option> 
     <option value="1">1</option> 
     <option value="2">2</option> 
     <option value="3">3</option> 
     </select></td> 
    </tr> 
    <tr> 
     <td>3</td> 
     <td>Eggs</td> 
     <td><input type="text" id="eggs-price" class="txt" value="400"></td> 
     <td><select id="eggs-qty" class="txt"> 
      <option value="0">0</option> 
      <option value="1">1</option> 
      <option value="2">2</option> 
      <option value="3">3</option> 
      </select></td> 
    </tr> 

    <tr id="summation"> 
     <td>&nbsp;</td> 
     <td align="right">Sum :</td> 
     <td align="center"><span id="sum">0</span></td> 
    </tr> 
</table> 

参照:https://jsfiddle.net/Bes7weB/544vun0r/