jquery从0增加到100,然后每25

时间:2013-10-12 17:15:25

标签: jquery

我有一个按钮,可以将输入值增加或减少25 但是,我希望它跳过25,50,75步,所以它是0,100,125,150,...
我认为应该可以使用增量的if语句,但不确定如何以及在何处实现它。

我在解释代码方面也遇到了一些问题,因此我可以将它与多个输入字段一起使用。我已经尝试过e.target,event.target的组合,到目前为止还没有任何效果。

var element = $(this).siblings(':input');
var element = $(e.target).closest(".value");

http://jsfiddle.net/aC45a/5/

这是我第一次使用jquery,而且标记让我感到困惑,所以任何帮助都会非常感激:)

4 个答案:

答案 0 :(得分:0)

以100开始第一个增量的最简单方法。

increment = Math.max(100, increment + 25);

所以在你的代码中,这将是......

element.val(Math.max(100, parseInt(element.val(), 10) + 25));

您可以使用...

修复多字段问题
var element = $(e.target).siblings(".value");

答案 1 :(得分:0)

要查找相应的输入元素,请使用$(this).siblings(".value")

为了跳过0到100之间的数字,我使用条件表达式。我将它封装到一个递减函数中,因为它在初始点击和自动重复计时器中都需要。这对于增量操作不是必需的,因为它保证在重复发生时你将超过100.

FIDDLE

function dec25(oldval) {
    return oldval <= 100 ? 0 : oldval - 25;
}

$('.inc25').on({
    mousedown : function(e) {
        var element = $(this).siblings(".value");
        var oldval = parseInt(element.val(), 10);
        var newval = oldval == 0 ? 100 : oldval + 25;
        element.val(newval);

        timeout = window.setTimeout(function () {
            interval = window.setInterval(function() {
                element.val(parseInt(element.val(), 10) + 25);
            }, 200);      
        }, 400);

        e.preventDefault();        
    },
    mouseup : function() {
        window.clearTimeout(timeout);
        window.clearInterval(interval);
    }
});

$('.dec25').on({
    mousedown : function(e) {
        var element = $(this).siblings(".value");
        element.val(dec25(parseInt(element.val(), 10)));

        timeout = window.setTimeout(function () {
            interval = window.setInterval(function() {
                element.val(dec25(parseInt(element.val())));
            }, 200);      
        }, 400);

        e.preventDefault();        
    },
    mouseup : function() {
        window.clearTimeout(timeout);
        window.clearInterval(interval);
    }
});

答案 2 :(得分:0)

递增是一个javascript问题,而不是jquery。我会这样处理增量:

value += 25;
if (value < 100)
    value = 100;

并且像这样递减:

value -= 25;
if (value < 100)
    value = 0;

有一些方法可以进一步压缩代码,但这可能是最好的可读性。

答案 3 :(得分:0)

看看这个

http://jsfiddle.net/L3yUK/1/

我只调整了增量功能。

相关代码:

$('.inc25').on({
    mousedown : function() {

        var element = $(this).parent().children(".value");
        var v = parseInt(element.val());

        element.val(v + (v>=100?25:100));

元素在mousedown处理程序中定义。

$(this)指向点击的元素

$(this).parent()指向父div

$(this).parent()。child(“。value”)潜入div“class”元素的元素

获取实际值并存储到变量 v

然后做你的数学/逻辑:增量v,多少?如果v> = 100则增加25,否则增加100。