0

次の方法を使用してテキスト ボックスを追加します。複数の変更を試みましたが、2 つのテキスト ボックスの値を乗算できないようです。必須 値が乗算され、3 番目のテキスト ボックスに表示される 2 つのテキスト ボックスが必要です。数値が変化したときに、この値を流動的に変化させたいです! 私はこのコードを使用していました。なぜなら、私は複数のことを乗算している可能性があるからです。

追加に使用するコードは

 <!--adding script #-->    
 <script>

$(document).ready(function(){
    calculateSum();

    //iterate through each textboxes and add keyup
    //handler to trigger sum event

    $(".txt").each(function() {

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

});

function calculateSum() {

    var sum = 0;


    $("#sum").val(sum.toFixed(2));
    //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));

      var total = document.getElementById("subtotal").value == "";
     var total = document.getElementById("subtotal").value = sum;
             }
    <!--END adding script #-->   

最後の行をに設定してみました

      var times1 = document.getElementById(subtotal);
      var times2 = document.getElementById(tax);
  var equal = times1.value * times2.value;

次に、 var total1 = document.getElementById("total1").value = sum9; を変更します。to var total1 = document.getElementById("total1").value = equal;

テキスト ボックスの ID は小計であり、更新しようとしているボックスの税は total1 です。

どうもありがとう!

4

3 に答える 3

1

すべてのキーアップで、すべての値を取得して明示的に追加するのではなく、対応する入力の以前の値を差し引いて、現在の更新された値を合計に追加することをお勧めします。

また、小計が正しく計算された場合、これまでに行った乗算操作は正しく機能するはずです..

上記で説明したように、税金を掛けて合計が計算される次の jsfiddle を見つけてください。

http://jsfiddle.net/tgvrs_santhosh/77uxK/1/

それでも問題が解決しない場合はお知らせください..

于 2012-07-18T03:35:09.347 に答える
0

あなたの質問は非常に紛らわしいと思いましたが、あなたが言おうとしているのは、すべての.txtフィールドを合計して小計を取得し、その小計に税率を掛けて合計を取得したいということだと思います。もしそうなら、あなたはそれを計算する方法のために小計が有効な数であることをすでに知っているので、それで:

var tax = +$("#tax").val(),          // get tax and convert to a number
    total = tax ? sum * tax : sum;   // if tax is a non-zero number multiply
                                     // otherwise just take the sum as is       

税フィールドが入力でない場合は、の.text()代わりにを使用してください.val()

既存のコードは、必要以上に複雑です。あなたはこれを行うことができます:

$(document).ready(function(){
    calculateSum();
    // you don't need an .each() loop, you can bind a keyup handler
    // to all elements in the jQuery object in one step, and you don't
    // need the anonymous function since it does nothing but call calculateSum:
    $(".txt").keyup(calculateSum);
});

function calculateSum() {
    var sum = 0,
        val;

    //iterate through each textboxes and add the values
    $(".txt").each(function() {
        // you don't need to test for NaN: just attempt to convert this.value
        // to a number with the unary plus operator and if the result is not
        // a number the expression val = +this.value will be falsy
        if(val = +this.value)
            sum += val;
    });

    $("#sum").html(sum.toFixed(2));

    var tax = +$("#tax").val();
    $("#total1").html((tax ? sum * tax : sum).toFixed(2));
}

何らかの理由で、私の答え全体で使用されている単項プラス演算子parseFloat()は広く知られていませんが、私はそれを好みます。

于 2012-07-18T03:45:23.070 に答える
0

これの代わりに

if(!isNaN(this.value) && this.value.length!=0) {

文字列値を使用しているため、正規表現の方がうまくいくと思います

if (/^([-]?((\d+)|(\d+\.\d+)|(\.\d+)))$/.test(this.value)) {

私はこの正規表現をテストしていませんが、何らかの理由でこれが機能しない場合、有効な数値をテストするための適切な正規表現を見つけることができるはずです。==また、その後があることに気付きましたgetElementById

それが重要かどうかは完全にはわかりませんがsum += (this.value * 1)、parseFloat の代わりに実行できます。

アップデート

これを試してvar equal = ($("#subtotal").val() * 1) * ($("#tax").val() * 1);

于 2012-07-18T02:57:16.697 に答える