0

3つの入力で完全に実行される自動更新合計フォームがあります。しかし、計算するにはもう 1 つの入力が必要です。フィールドを追加してスクリプトを模倣しようとしましたが、うまくいきませんでした。助けてください。

function formatDollar(num) {
    var p = num.toFixed(2).split(".");
    return "" + p[0].split("").reverse().reduce(function(acc, num, i, orig) {
        return  num + (i && !(i % 3) ? "," : "") + acc;
    }, "");
}
    //auto sum
function calculateDiscount()
{
    var cost = document.getElementById('insr_total1').value.replace(/[^0-9]+/i,"");
        cost = cost.replace(/[^0-9]+/i,"");         
    var discount = document.getElementById('insr_discount').value;
    //do the math
    var net = cost-discount;
    //update
    document.getElementById('insr_discount2').innerHTML = formatDollar(cost*(discount/100));
    document.getElementById('insr_total3').value = formatDollar(cost-cost*(discount/100));
}

そして、これは私が使用するhtmlです:

<table>
<tr>
<td align="left" valign="top">Cost1</td>
<td align="left" valign="top"><input type="text" name="insr_total1" id="insr_total1" size="17" maxlength="15" onKeyup="calculateDiscount(); return false;" /> USD</td>
</tr>
<tr>
<td align="left" valign="top">Discount</td>
<td align="left" valign="top"><input type="text" name="insr_discount" id="insr_discount" size="4" maxlength="3"  onkeyup="calculateDiscount(); return false;" /> % (<span id="insr_discount2" style="color:green; font-size: 13px;"></span> USD)</td>
</tr>
<tr>
<td align="left" valign="top">Cost 2</td>
<td align="left" valign="top"><input type="text" name="insr_total2" id="insr_total2" size="17" maxlength="15"  /> USD</td>
</tr>
<tr>
<td align="left" valign="top">Overall</td>
<td align="left" valign="top"><input type="text" name="insr_total3" id="insr_total3" size="17" readonly maxlength="15"  /> USD</td>
</tr>
</table>

さて、insr_total3 から減算するには「insr_total2」が必要です。私が試しても、常にエラーが発生します。すべての返信に感謝します。

4

2 に答える 2

1

最初にparseFloatを使用して文字列を数値に変換し、isNaNで NaN でないかどうかを確認します。

var number1 = parseFloat(value1) * 100
  , number2 = parseFloat(value2) * 100
  , result = (number1 - number2) / 100;

また、JavaScript での小数と計算には注意してください。最初に数値を 100 または 1000 で乗算することをお勧めします (必要な精度によって異なります)。そうしないと、丸め誤差が発生します。

于 2012-07-09T12:25:28.070 に答える
0

あなたが持っている値は文字列であり、一方を他方から減算しようとしています。float に変換する必要があります。

var discount = parseFloat(document.getElementById('insr_discount').value);

等...

于 2012-07-09T12:26:24.090 に答える