2

それぞれの値を計算し、計算された値を表示するスクリプトがあります。最後に、すべてのdivからすでに計算された値も計算します

htmlコードは次のとおりです。

<td>
<div>
<input name="r" class="rate" type="text" maxlength="255" size="5" value />
<input name="p" class="pack" type="text" maxlength="255" size="5" value />
<span class="amount"></span>
</div>
</td>

<td>
<div>
<input name="r" class="rate" type="text" maxlength="255" size="5" value />
<input name="p" class="pack" type="text" maxlength="255" size="5" value />
<span class="amount"></span>
</div>
</td>

問題は、すべてのフィールドをフォームに入れてデータベースに送信したいということです。ただし、すべての div には「r」と「p」という名前の 2 つの入力フィールドが含まれています。

そのため、名前を一意にする方法や、POST を使用して名前を DB に渡す方法がわからないため、ここで立ち往生しています。

計算スクリプトは次のようになります。

<script type="text/javascript">//<![CDATA[ 

//any time the amount changes
$(document).ready(function() {
    $('input[name=r],input[name=p]').change(function(e) {
        var total = 0;
        var $row = $(this).parent();
        var rate = $row.find('input[name=r]').val();
        var pack = $row.find('input[name=p]').val();

        total = parseFloat(rate * pack);
        //update the row total
        $row.find('.amount').text(total);

        var total_amount = 0;
        $('.amount').each(function() {
            //Get the value
            var am= $(this).text();
            console.log(am);
            //if it's a number add it to the total
            if (IsNumeric(am)) {
                total_amount += parseFloat(am, 10);
            }
        });
        $('.total_amount').text(total_amount);
    });
});

//isNumeric function Stolen from: 
//http://stackoverflow.com/questions/18082/validate-numbers-in-javascript-isnumeric

function IsNumeric(input) {
    return (input - 0) == input && input.length > 0;
}
//]]>  

</script>
4

1 に答える 1

1

HTML:

<input type="text" name="r[]">
<input type="text" name="p[]">
<hr>
<input type="text" name="r[]">
<input type="text" name="p[]">
<hr>
<input type="text" name="r[]">
<input type="text" name="p[]">

PHP:

for ($i = 0; $i < count($_POST['p']); $i++) {
    $rate = $_POST['r'][$i];
    $pack = $_POST['p'][$i];
    // do something with $rate and $pack
}

ブラウザーはすべての入力を (値が入力されていない場合でも) 送信し、仕様により、HTML コードで定義されている順序で送信するため、2 つの$_POST配列の要素が整列し、対応する要素が一致することrateを信頼できます。packそれぞれの配列の同じインデックスで受信されます。

于 2012-09-20T06:01:37.870 に答える