2014-03-04 78 views
1

我期待我過濾輸入,所以它只能包含數字濾波器輸入數字只有

re = /[^0-9]/; 
if(!re.test(form.number.value)) { 
    alert("Member must contain only numbers. Please try again"); 
    form.member.focus(); 
    return false; 
} 

,但它沒有工作(如果我給例如輸入123fd,它不給我錯誤)任何人都可以幫助我?

+0

當你說它「沒有工作」,發生了什麼?有錯誤嗎?輸出是否與您預期的不同?添加一些示例輸入和輸出到你的問題。 – Michelle

回答

2

因爲你的正則表達式是檢查非數字因此改變否定你,如果條件:

re = /\D/; 
if(re.test(form.number.value)) { 
    alert("Member must contain only numbers. Please try again"); 
    // rest of code 
} 

代替:

if(!re.test(form.number.value)) {...} 
2

您可以使用HTML5輸入類型數量僅限制數量條目:

<input type="number" name="someid" /> 
+1

非常糟糕,因爲它是客戶端的東西,任何人都可以篡改它。 沒有downvote,但沒有upvote以及。 –

0
if($input == intval($input)){ 
    //OK 
} 

編輯對不起它的JavaScript:

if(input == parseInt(input)){ 
    //OK 
} 
0

你的正則表達式匹配任何東西,但數字。當你否定測試時,你基本上會說「匹配數字」,這意味着你沒有得到非數字字符串的警報消息。例如:

!(/[^0-9]/.test('123')) 
// true -> alert 

!(/[^0-9]/.test('123fd')) 
// false -> don't enter if clause 

您可以通過刪除if語句中的感嘆號來修復代碼。然而,表達你的測試是作爲anubhava更清晰的方式提到:

if (/\D/.test(form.number.value)) { 
    // validation error 
} 

\D匹配非數字字符。