2016-04-28 50 views
2

我使用這個正則表達式不同,該代碼號僅輸入jQuery的 - 正則表達式的按鍵動作在Chrome和Firefox

var numRegex = "[0-9\b]"; 

$('.numOnly').keypress(function(e){ 
    var regex = new RegExp(numRegex); 
    var str = String.fromCharCode(!e.charCode ? e.which : e.charCode); 
    if (regex.test(str)) { 
     return true; 
    } else { 
    e.preventDefault(); 
    return false; 
    }}); 

我的代碼在Chrome瀏覽器以及包括數字輸入, Backspace,Return Key,Home,End,Shift和Ctrl,但是在firefox中,我只能輸入Numeric和backspace。

有使用數字打字和使用正則表達式的另一個需要的東西的任何更好的解決方案?

謝謝

+0

檢查此SO鏈接http://stackoverflow.com/questions/17164239/add-delete-and-arrow-key-into-regular-expression解決方案 – ahPo

+0

您可以定義「另一個需要的東西」?什麼字符應該是允許的/不允許的?您可能會發現明確禁止使用負面匹配的字符正則表達式的工作原理更具可預測性。這一個排除所有字母:var numRegex =「[^ A-Za-z]」; –

+0

爲什麼使用JQuery,使用' = 48 && event.charCode <= 57 「name =」numOnly「/>' –

回答

0

您可以使用

<input type="text" onkeypress="return (event.charCode == 8 || event.charCode == 0) ? null : event.charCode >= 48 && event.charCode <= 57" name="numOnly" />

無需特殊處理的JQuery。 (event.charCode == 8 || event.charCode == 0) ?檢查旨在支持FireFox中的BACKSPACE和DELETE鍵。

+0

** Thanks **。它運作良好:D – Ampersanda