2014-03-04 77 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匹配非数字字符。