0

同じページで 2 つの jquery.calculation を実行するのに助けが必要です。私の例では、2 番目のテーブルのみが機能しています。スクリプト 2x を追加し、すべての要素の名前を変更しましたが、機能していません。

2 番目のスクリプトを削除すると、1 番目のスクリプトが機能します。2 番目のスクリプトを追加すると、最初のスクリプトが停止します。

どういうわけかこれら 2 つのスクリプトを組み合わせる必要があることは理解していますが、その方法は本当にわかりません。

ありがとうございました。

以下に例を示します: jsfiddle の例

<script>
    $(document).ready(function() {
        $("#idPluginVersion").text($.Calculation.version);
        $("[name^=qty_]").bind("change keyup", recalc);
        $("[name^=aantal_]").bind("change keyup", recalc);
        $("[name^=price_]").bind("change keyup", recalc);
        $("[name^=bedrag_]").bind("change keyup", recalc);
        recalc();
    });

    function recalc() {
        $("[id^=total_item]").calc(
            "((qty * price) + (aantal * bedrag))", {
            qty: $("[name^=qty_]"),
            aantal: $("[name^=aantal_]"),
            price: $("[id^=price_]"),
            bedrag: $("[id^=bedrag_]")
        },

        function(s) {
            return s.toFixed(2);
        },

        function($this) {
            var sum = $this.sum();
            $("#subTotal").val(sum.toFixed(2));
        });
    }
</script>
<script>
    $(document).ready(function() {
        $("#idPluginVersion").text($.Calculation.version);
        $("[name^=qty2_]").bind("change keyup", recalc);
        $("[name^=aantal2_]").bind("change keyup", recalc);
        $("[name^=price2_]").bind("change keyup", recalc);
        $("[name^=bedrag2_]").bind("change keyup", recalc);
        recalc();
    });

    function recalc() {
        $("[id^=total2_item]").calc(
            "((qty2 * price2) + (aantal2 * bedrag2))", {
            qty2: $("[name^=qty2_]"),
            aantal2: $("[name^=aantal2_]"),
            price2: $("[id^=price2_]"),
            bedrag2: $("[id^=bedrag2_]")
        },

        function(s) {
            return s.toFixed(2);
        },

        function($this) {
            var sum = $this.sum();
            $("#subTotal2").val(sum.toFixed(2));
        });
    }
</script>
4

1 に答える 1

1

編集: 自由な時間ができたので、これを修正して、よりシンプルで効率的なコードにしました。私が作成した JSFiddle でも問題なく動作するようです。注: JQuery/JS コード全体をここに貼り付けていますが、動作させるために HTML にいくつかのクラスを追加しました。JSFiddleでそれを調べることができます。それらを見つけやすくするために、「qty」、「aantal」、「price」、「bedrag」、「total_item」、および「subTotal」入力に追加されました。最後に、次のように、パラメーターとしてonclick渡す必要のあるすべての関数に追加しました。thisonclick="recalc(this)"

JSFiddle

<script>
    $(document).ready(function() {
        $("#idPluginVersion").text($.Calculation.version);
        $(".qty").bind("change keyup", function(event) {
            recalc($(this));
        });
    });

    function recalc(curr) {
        var close = $(curr).closest("table");

        $(close).find(".total_item").calc(
            "((qty * price) + (aantal * bedrag))", {
            qty: $(close).find(".qty"),
            aantal: $(close).find(".aantal"),
            price: $(close).find(".price"),
            bedrag: $(close).find(".bedrag")
        },

        function(s) {
            return s.toFixed(2);
        },

        function($this) {
            var sum = $this.sum();
            $(close).find(".subTotal").val(sum.toFixed(2));
        });
    }
</script>

編集:デフォルトで小計フィールドに「0.00」を取得するには、次のように2つの入力に値として追加するだけです:

<input id="subTotal" class="subTotal" style="text-align:right;" type="text" name="SubTotal" readonly="readonly" size="7" value="0.00" />

<input id="subTotal2" class="subTotal" style="text-align:right;" type="text" name="SubTotal2" readonly="readonly" size="7" value="0.00" />

JSFiddle

于 2013-09-10T16:50:27.897 に答える