2011-09-20 21 views
1

我的意思是如果輸入數字,它必須拋出一個錯誤我們如何獲得一個javascript程序來防止數字輸入?

+0

您的意思是,如果條目中至少有一位數字,或者它完全由數字組成,您是否希望拒絕輸入?那麼浮點數呢?非拉丁數字呢?你能更具體一點嗎?謝謝。 –

+0

排除任何棕褐色,無論它在哪裏,在字符之間以及 – James

+1

數字_are_字符。當你說「字符」時,你的意思是「字母」還是「除數字(包括標點符號等)之外的任何東西」? – nnnnnn

回答

2

如果你想排除數字,只是通過用regEx替換它們來阻止它們被輸入。你可以告訴他們不準進入號碼以及用戶..

//collect the string 
var userStr = getTheString();//whatever the source of the string is... probably called onKeyUp 
if(userStr.match(/\d/)){ 
    userStr = userStr.replace(/\d+/g,"");//[edited to include all digits] 
    alert("no numbers please"); 
} 

[編輯] 這聽起來像一個家庭作業,所以要清楚,正則表達式做一個真正強大的方式各種字符串操作和驗證。在上面的示例中,我正在測試(使用match)來查看字符串中是否存在任何數字。我建議每當用戶從鍵盤上拿起手指時都要運行此操作,這樣可以保證防止未經授權的輸入。 replace()方法找出字符串中的任何和所有數字(\ d +),並用第二個參數替換它們,這只是一個空字符串。你明顯可以用更復雜的方式做這些事情,用循環和你自己的字符串方法,逐字逐字地瀏覽字符串,然後提取數字字符,如果你的老師希望看到你在沒有regEx的舒適的情況下找出它(對於需要學習算法思維的初學者程序員來說,這是完全合理的),那麼你應該這麼說,我們很樂意幫助你以「醜陋」的方式去做。

乾杯。

+0

好的開始。讓我們看看OP是否想要刪除所有的數字,在這種情況下,替換'/ d +/g'將是首選。 (然後它將是一個+1。) –

0

有關檢查輸入的方法,請參見this jsfiddle。基本上它會週期性地掃描輸入字段,讀取它的輸入和格式化規則,並在字段值不符合這些規則時發出警告。該方法還捕獲粘貼(Ctrl-V)到輸入字段中的值。

1

你可以使用這個javascript函數。

function onlyNumbers(event) { 
    var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 
    if (Key == 13 || (Key >= 48 && Key <= 57)) return true; 
    else return false; 
} 

用法:

<input type="text" onkeypress="return onlyNumbers(event);" /> 

這將防止任何數字輸入。如果你只是想提醒用戶,你可以使用這個。

function onlyNumbers(event) { 
    var Key = event.keyCode ? event.keyCode : event.which ? event.which : event.charCode; 
    if (Key == 13 || (Key >= 48 && Key <= 57)) return true; 
    else alert("Error"); 
} 

希望這回答你的問題。

+0

用keyCode擺弄使用IME輸入數據的用戶會遇到問題,並且它不會阻止粘貼數字。 – Kornel

相關問題