2011-04-26 48 views
3

我想使用JavaScript来检查输入字段是否仅包含数字字符。到目前为止,字段的验证检查不是空的 - 工作正常。但是,数字字符验证不起作用。我会很感激任何帮助。很多谢谢。JavaScript中数字字符的表单验证

<script type="text/javascript"> 
//form validation 
function validateForm() 
{ 
var x=document.forms["cdp_form"]["univer_number"].value 
if (x==null || x=="") 
    { 
    alert("University number (URN) field must be filled in"); 
    cdp_form.univer_number.focus(); 
    return false; 
    } 
else if (is_valid = /^[0-9]+$/.test(x)) 
    { 
    alert("University number (URN) field must have numeric characters"); 
    cdp_form.univer_number.focus(); 
    return false; 
    } 
} 
</script> 


<input type ="text" id="univer_number" maxlength="7" size="25" name="univer_number" /> 
+0

“不工作”是一种描述问题的糟糕方式。什么不起作用?你有错误吗? – Oded 2011-04-26 19:48:23

+0

它不提供我想要的验证错误。不要担心问题已经解决 - 请参阅接受的答案。 – 2011-04-26 20:03:52

+0

我担心,因为我希望你的下一个问题有更好的描述。 http://tinyurl.com/so-hints – Oded 2011-04-26 20:06:37

回答

0

您需要测试的正则表达式的否定,因为你想要的验证,以在出现故障时发出警报,所以只需添加!在前面它:

else if (is_valid = !/^[0-9]+$/.test(x)) 

See example →

+0

非常感谢您的回答。它的作品 - 很容易忽略这样的错误。 – 2011-04-26 20:02:57

1

您的线路上,说else if (is_valid = /^[0-9]+$/.test(x)),你正在做一个简单的任务,而不是测试,它实际上是相匹配的正则表达式。

+0

看起来很奇怪,它仍然会产生正确的结果(至少在chrome中摆弄) – 2011-04-26 19:54:23

2

你的测试条件是有点奇怪:

else if (is_valid = /^[0-9]+$/.test(x)) 

为什么有冗余比较is_valid?只要做到:

else if (/^[0-9]+$/.test(x)) 

虽然使用的是将匹配的数字,只有数字正则表达式 - 你需要改变以匹配任何是一个数字 - 这样/^[^0-9]+$/

更重要的是,获得完全摆脱了正则表达式,并使用IsNumeric

else if (!IsNumeric(x)) 
2

而不是使用正则表达式,如果它只能是数字,你可以只需在Javascript中使用IsNumeric即可。

IsNumeric('1') => true; 
IsNumeric('145266') => true; 
IsNumeric('abc5423856') => false; 
2

你需要翻转你的正则表达式(添加^内[0-9]):

/^[^0-9]+$/ 
0

我知道这是一个老的文章,但我想我会张贴我工作。我并不需要在所有要填充的领域,但如果它是它必须是数字:

function validateForm() 
{ 
var x=document.forms["myformName"]["myformField"].value; 

if (/[^0-9]+$/.test(x)) 
    { 
    alert("Please enter a numerical amount without a decimal point"); 
    myformName.myformField.focus(); 
    return false; 
    } 
}