2013-10-12 55 views
0

我有一個按鈕,增加或減少輸入的值25。
但是,我想它跳過25,50,75步驟,所以它會0,100,125,150,...
我認爲這應該是可能與增量if語句,但不確定如何以及在哪裏實現它。jquery遞增從0到100,然後每25 25

我也有一些問題的概括代碼,所以我可以使用它與多個輸入字段。我已經嘗試過e.target,event.target的組合,至今沒有任何工作。

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

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

這是我第一次使用jQuery和標記混淆了我,所以任何幫助,將不勝感激:)在開始第一個增量

回答

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); 
    } 
}); 
0

的最簡單方法100.

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

因此,在你的代碼,這將是...

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

您可以通過使用解決您的多個領域的問題...

var element = $(e.target).siblings(".value"); 
+0

另請注意我已將基數參數添加到parseInt調用中,這是很好的做法,以確保它始終以base-10進行分析。 –

0

遞增是一個JavaScript的問題,而不是jQuery的。我會處理像這樣的遞增:

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

像這樣對於遞減:

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

有辦法進一步壓縮的代碼,但是這可能是最好的可讀性。

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

元件被鼠標按下處理程序內定義。

$(this)指向點擊元素

$(this)。父()指向父DIV

$(本).parent()。子女(「值」)潛水回的股利類的‘價值’

的元素獲取的實際值和存入變量v

然後做你的數學/邏輯:增量v,多少?如果v> = 100增加25,否則增加100。