0

我需要一些帮助在同一页面上运行两个 jquery.calculation,在我的示例中,只有第二个表在工作,我添加了脚本 2x 并重命名了所有元素,但它不工作。

当我删除第二个脚本时,第一个脚本正在工作。当我添加第二个脚本时,第一个脚本停止。

我知道这两个脚本需要以某种方式组合,但我真的不知道如何。

谢谢你。

这是一个示例: 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”、“anantal”、“price”、“bedrag”、“total_item”和“subTotal”输入中。最后,我添加了所有onclick必须this作为参数传入的函数,如下所示:onclick="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>

编辑:默认情况下,要在 subTotal 字段中获得“0.00”,只需将其作为值添加到这两个输入中,如下所示:

<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 回答