多一个jquery在同一页面上计算

时间:2013-09-10 16:32:20

标签: jquery

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

当我删除第二个脚本时,第一个脚本正在运行。 当我添加第二个脚本时,第一个脚本会停止。

我理解这两个脚本需要合并,但我真的不知道如何。

谢谢。

这是一个例子: jsfiddle example

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

1 个答案:

答案 0 :(得分:1)

编辑:现在我有一些空闲时间,我已经为你修改了这个,以便它更简单,更高效的代码。它似乎在我制作的JSFiddle中运行良好。注意:我在这里粘贴了整个JQuery / JS代码,但是我在HTML中添加了几个类来使其工作。你可以在JSFiddle中查看它。为了使它们更容易找到,它们被添加到&#34;数量&#34;,&#34; aantal&#34;,&#34;价格&#34;,&#34; bedrag&#34;,&# 34; total_item&#34;和&#34; subTotal&#34;投入。最后,我添加了所有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>

编辑:获得&#34; 0.00&#34;默认情况下,在您的subTotal字段中,只需将其作为值添加到这两个输入中,如下所示:

<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