2011-09-20 121 views
1

在尋找方法來允許在文本輸入你通常得到的東西只喜歡數字:如何只允許文本輸入的數字,但允許JavaScript的命令?

function keyPressEvent (e) { 
    var keyCode = e.which || e.keyCode; 
    if (keyCode < 48 || keyCode > 57) { 
     return false; 
    } 
} 

但問題是,這讓只有你的命令不起作用鍵。從退格和刪除開始,但即使按Ctrl + A或F5。我知道我可以爲所有這些創造例外,但我認爲這將是時間的一個縮影。有沒有簡單的方法來做我想要的?有沒有像檢測將被添加到文本的字符,而不是按下的鍵?

+0

你可以做他們建議在這裏什麼:http://stackoverflow.com/questions/950208/textbox-with-alphanumeric-check-in-javascript選擇字母字符。 – scrappedcola

回答

2

其實我去了一個辦法,我讓用戶類型/輸入任何他們想做的,並手動強制值必須是數字。像這樣的東西(這是一個jQuery項目,但這個想法可以很容易地重複使用沒有jQuery)。

fieldJq.bind('click keyup change blur focus', function (ev) { 
    var curVal = $(this).val(); 
    $(this).val(curVal.replace(/[^0-9\.]/g, '')); 
}); 

這裏的想法是,我讓他們把任何他們想進去(所以沒有打破比如複製/粘貼等控制命令的機會),但任何值改變之後我刪除任何東西這不是一個數字或小數點。在這一點上它不是100%防火(10.0.0不是無效的),但它起初至少接近。如果您不需要浮點支持,並且可以從正則表達式中刪除\.,那麼您將擁有強制數字輸入。

+0

我想這是現​​在最好的答案,同時我應該等待在大多數瀏覽器中實現的數字輸入類型。無論如何,謝謝! – Cokegod

+0

在IE7中它總是把光標放到最後,可以通過在替換之前檢查來修復: if(curVal.search(/ [^ 0-9 \。]/g)> - 1) – samir105