2011-11-20 38 views
0

我有兩個問題:我想讓微調器正確顯示數字

問題1:我有一個微調功能,我有一個小問題。例如,如果用戶在微調器中鍵入00000009或00021,如果用戶點擊離開微調器,它仍將在微調器中顯示00000009或00021。我想要的是,如果發生這樣的事情,那麼我想要的是,當用戶點擊時,我想讓微調顯示爲9或21而不是00000009或00021。我不知道如何做到這一點。有誰知道如何解決這個問題:

問題2:如果我使用退格鍵從微調框中刪除一個數字,並且留下一個空白微調框,需要做些什麼以便如果我點擊微調框,微調器中的最後一個數字重新出現在微調器中?

我的主要功能微調:

function Spinner(elem,min, max){ 
       this.elem = elem; 
       this.elem.value = min; 
       this.min = min; 
       this.max = max; 
       this.timer; 
       this.speed = 150; //milliseconds between scroll values 
       var selfO = this; 

       this.elem.onkeyup = function(){ 
        var regex = /^[0-9]*$/; 
        if(!regex.test(selfO.elem.value)){ 
         selfO.elem.value = selfO.elem.value.substring(0,selfO.elem.value.length-1); 
         return; 
        } 
        selfO.validateValue(); 
       } 


      this.validateValue = function(){ 
       if(Number(selfO.elem.value) > selfO.max) {selfO.elem.value = selfO.max;} 
       if(Number(selfO.elem.value) < selfO.min) {selfO.elem.value = selfO.min;} 
      } 

      this.stopSpinning = function(){ 
       clearTimeout(selfO.timer); 
      } 

      this.spinValue = function(dir){ 
       selfO.elem.value = Number(selfO.elem.value) + dir; 
       selfO.validateValue(); 
       selfO.timer = setTimeout(function(){selfO.spinValue(dir);},selfO.speed); 
      } 

     }; 

window.onload=function(){ 
      //create the Spinner objects 
      var SpinnerHours = new Spinner(document.getElementById('txtHours'),0,23); 
} 
+0

我認爲我包含底部函數以幫助您更好地理解它 – BruceyBandit

回答

3

要返回的數等作爲00000009 9使用parseInt();

alert(parseInt(000000009, 10)); // returns 9 

正如所指出的Jonathan Lonowski第二個參數是基數。

radix參數用於指定要使用的數字系統,例如,16(十六進制)的基數表示字符串中的數字應該從十六進制數字解析爲十進制數字。

如果省略radix參數,JavaScript的假定:

  • 如果字符串以 「0x」 開始,基數是16(十六進制)
  • 如果字符串以 「0」 開始,基數是8(八進制)。此功能已被棄用
  • 如果字符串以其他任何值開頭,基數是10(十進制)
+2

使用前導0時,您需要傳遞10的基數以避免八進制評估 - parseInt(「000000009」,10)'。你的例子工作原因是它已經是一個數字。 –

+0

我應該在哪裏插入解析插入我的代碼,我嘗試在底部函數parseInt(0),parseInt(23);但這並不起作用 – BruceyBandit

+0

很高興知道,只是讀了一下基數參數,從來不知道它或已經使用它......無論哪種方式,我學到了一些新東西,所以+1和更新我的答案。 –

0
//question 2 answer 
var input=''; 
document.getElementById('inputName').onkeydown=function(e){ 
    e = e || window.event; 
    keycode = e.keyCode || e.which; 
    if(keycode !== 8 || keycode !== 46){//backspace and delete keycodes 
    input=this.value; 
    } 
} 
//question 1 answer 
document.getElementById('inputName').onblur=function(){ 
    var a=this.value; 
    if(isNaN(a)){ 
    this.value=input-0; 
    } 
    else{ 
    this.value=a-0; 
    } 
} 

這確實什麼是當用戶輸入一個數字它保存,除非處於該數值按刪除或退格鍵。然後,當輸入失去焦點時,它會檢查並且如果沒有有效的號碼,則會將其更改爲保存的值。此外,onblur也擺脫了任何額外的零。此外,您還需要在檢查輸入的部分添加更多內容。例如,將任何非數字輸入更改爲''。換句話說,這不是白癡證明。