2013-04-12 40 views
-1

我想添加一個標誌(+)在我的領域與微調但它返回每次沒有標誌的數字,我可以解決這個問題嗎?添加加入登錄微調(jquery)

var spinner = $("#spinner").spinner({ 
    step: 0.25, 
    min:-12, 
    max:8, 
    change: function(event, ui) { 
     var ph = $('#spinner').val(); 
     if(ph.indexOf('+') == 0) { 
      alert($('#spinner').val()); 
      $('#spinner').val('+'+$('#spinner').val()); 
     } else { 

     } 
    }, 
    spin: function(event, ui) { 

    } 

}); 

或U可以點擊此處查看:http://jsfiddle.net/XseWc/220/

回答

1

這是自旋太:JSFIDDLE

var spinner = $("#spinner").spinner({ 
    step: 0.25, 
    min: -12, 
    max: 8, 
    change: function (event, ui) {   
    }, 
    spin: function (event, ui) { 
     var keepPlus = spinner.val().indexOf('+') === 0?true:false; 
     setTimeout(function() { 
      var ph = spinner.val(); 
      if (ph > 0 && keepPlus)spinner.val('+' + spinner.val()); 
     }, 0); 
    } 

}); 
+0

中提到,它在這裏返回evrytime加號,只是我想要的是:如果我寫加號,它必須保持當我旋轉別的,如果我不寫加旋轉沒有加,但在我的情況下我總是加 –

+0

查看更新回答 –

+0

酷它工作!!!! thanx但我不明白也ahy我寫逗號代替點值返回到0,但是當我寫點evrything工作正常,你有沒有想法我怎麼能解決這個問題呢,thanx –

1

的indexOf返回一個索引,或者-1沒有找到。你需要用比較-1而不是0

if(ph.indexOf('+') == -1) 

jsFiddle Demo

不過我建議要對這個完全不同的方式。相反,請覆蓋_format方法。

$.ui.spinner.prototype._format = function(value){ 
    if (value > 0) { 
     return "+" + value; 
    } else { 
     return value; 
    } 
} 

var spinner = $("#spinner").spinner({ 
    step: 0.25, 
    min:-12, 
    max:8 
}); 

jsFiddle Demo

現在它獲取更新都在變化和旋轉,沒有醜陋的跳躍,並且它適用於負數了。這樣做當然意味着您不能使用全球化數字格式。

+2

要添加到這一點,'indexOf'將返回「0」,如果匹配上字符串的第一個字符開始。如果搜索「+」,「+45」將返回「0」。 – h2ooooooo

+0

確定它看起來不錯,但另一個問題爲什麼代碼不工作時,我旋轉? –

+0

@GoodD [你是什麼意思,它不起作用?](http://jsfiddle.net/XseWc/228/) – h2ooooooo