jQuery检测计数器的总值是否为0

时间:2014-08-21 11:05:58

标签: javascript jquery

由于缺乏Javascript经验,我有一个小问题,我不知道如何处理。基本上我有两个或更多的计数器,每个计数器分别向上或向下计数。 我希望在所有计数器总值等于0 时运行一个函数 但我不知道如何从有人为我写的函数中提取该值。

这是计数器的jsFiddle http://jsfiddle.net/RoryMcCrossan/puJ6G/1015/


jQuery(document).ready(function () {
$('.qtyplus').click(function (e) {
    e.preventDefault();
    var $container = $(this).closest('.count-container');
    var $field = $container.find('input[name=' + $(this).data('field') + ']');
    var currentVal = parseInt($field.val(), 10);
    if (!isNaN(currentVal)) {
        $field.val(currentVal + 1);
    } else {
        $field.val(0);
    }
});

$(".qtyminus").click(function (e) {
    e.preventDefault();
    var $container = $(this).closest('.count-container');
    var $field = $container.find('input[name=' + $(this).data('field') + ']');
    var currentVal = parseInt($field.val(), 10);
    if (!isNaN(currentVal) && !currentVal == 0) {
        $field.val(currentVal - 1);
    } else {
        $field.val(0);
    }
});

});

非常感谢! :)

1 个答案:

答案 0 :(得分:1)

首先,我们可以编写一个新函数来检查所有计数器并将它们的值相加:

function checkCounters() {
    var result = 0;

    // Loop through each "qty" input element        
    $('.qty').each(function() {
        // Add the value of the input to our result
        result += +this.value;
    });

    if (result === 0)
        // Your function should be triggered here
        console.log("Result is 0");
    else
        console.log("Result isn't 0, result is " + result);
}

每当我们更新计数器的值时,我们就可以调用此函数:

...
if (!isNaN(currentVal)) {
    $field.val(currentVal + 1);
} else {
    $field.val(0);
}
checkCounters();

JSFiddle demo