2012-12-06 64 views
0

我有這樣的javascript代碼,允許在文本框只允許數字輸入

function CheckNumeric(e) { 

     if (window.event) // IE 
     { 
      if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8) { 
       event.returnValue = false; 
       return false; 
      } 
     } 
     else { // Fire Fox 
      if ((e.which < 48 || e.which > 57) & e.which != 8) { 
       e.preventDefault(); 
       return false; 
      } 
     } 
    } 

的問題是,它也是防止「TAB」鍵只有數字輸入!我喜歡讓它。

我希望你能幫我做到這一點。

+0

Tab是9我相信,而不是8. –

+0

@Asad 8 is backspace – epascarello

回答

2

我會改變CheckNumeric函數爲這樣的東西,並使用正則表達式來確定有效/無效的輸入。 /[0-9\t\b]+/匹配數字,製表符和退格符。如果你也想使其空間變化/[0-9\t\b\s]+/

function CheckNumeric(e) 
{ 
    var charCode = e.charCode || e.keyCode; 
    var character = String.fromCharCode(charCode); 
    if(!character.match(/[0-9\t\b]+/)) 
    { 
     if(window.event) 
      event.returnValue = false; 
     else 
      e.preventDefault(); 
     return false; 
    } 
    return true; 
} 

另外,爲了捕捉鍵碼正確,您應該綁定到onKeyPress事件,而不是onKeyDown,因爲它不會爲數字鍵盤提供正確的鍵碼。

<input type="text" onkeypress="CheckNumeric(event)"/> 
0

KeyCode 8用於退格。我不知道你是否因失誤或不添加:

function CheckNumeric(e) { 

    if (window.event) // IE 
    { 
     if ((e.keyCode < 48 || e.keyCode > 57) & e.keyCode != 8 & e.keyCode != 9) { 
      event.returnValue = false; 
      return false; 
     } 
    } 
    else { // Fire Fox 
     if ((e.which < 48 || e.which > 57) & e.which != 8 & e.which != 9) { 
      e.preventDefault(); 
      return false; 
     } 
    } 
} 
0

我更喜歡用這裏(更乾淨的代碼,簡單的邏輯)的方法是使用HTML5屬性(或者type="number"pattern="[0-9]*"將工作做好)。

請參閱Disable webkit's spin buttons on input type="number"?如果您決定使用<input type="number">並且要禁用spinners。

如果您確實需要支持具有此行爲的舊瀏覽器,請考慮使用支持html5表單屬性的填充。