如果为

时间:2018-02-15 02:32:51

标签: javascript jquery checkbox input

这段代码有什么问题:

function calculateAddOnPrice() {
        if (totalPrice <= 47) {
            var polybags= $('#polybags').is(':checked') ? "0.5" : "0";            
            console.log(polybags);
        }
        else if (totalPrice >= 48 && totalPrice < 71) {
            var polybags = $('#polybags').is(':checked') ? "0.35" : "0";            
            console.log(polybags);
        }

所以我将输出记录到控制台。

当totalPrice小于47并且我点击ON的复选框时,控制台如下所示:

0.5

当我解开OFF时,我得到了这个:

0

总价格是&gt; 48,我勾选方框,我得到输出:

0.5
0.35

如果我取消它,我会得到:

0
0

我不知道为什么它给我双重价值,有人可以帮助我吗? :)

UPDATE -----

完整的jQuery:https://pastebin.com/DYV92cj3

此部分的HTML:

<div class="checkbox">
    <label><input type="checkbox" id="polybags">I WOULD LIKE POLY BAGGING</label>
</div>

1 个答案:

答案 0 :(得分:0)

当您开始在.size_control上输入内容时,您正在执行整个代码块。这意味着每次输入大小控制元素时,函数都会附加到复选框的更改事件中。三个输入意味着更改事件被堆叠三次,因此您将获得三个函数调用。

我们将不必要的代码放在输入事件之外,并且可能将它们放在函数中以实现更清晰的方法

$(document).ready(function () {
    $(document).on('input', '.size_control', function(event) { sizeControlFunc(); });
    setChkBxEvents();
});

https://pastebin.com/3bS96AhA