在JavaScript中对数字字符进行表单验证

时间:2011-04-26 19:45:57

标签: 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" />

7 个答案:

答案 0 :(得分:2)

你的测试条件有点奇怪:

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

为什么要与is_valid进行冗余比较?只是做:

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

虽然您使用的正则表达式将匹配数字和仅数字 - 您需要更改它以匹配数字的任何内容 - 例如/^[^0-9]+$/

更好的是,完全摆脱正则表达式并使用IsNumeric

else if (!IsNumeric(x))

答案 1 :(得分:2)

不是使用Regex,如果它只是数字,你只需在Javascript中使用IsNumeric。

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

答案 2 :(得分:2)

您需要反转正则表达式(在[0-9]内添加^):

/^[^0-9]+$/

答案 3 :(得分:1)

在您的else if (is_valid = /^[0-9]+$/.test(x))行上,您正在执行一项简单的操作,而不是测试它是否与正则表达式匹配。

答案 4 :(得分:1)

您的模式仍会接受此输入<b>#@$@#123ad!@#12<b>。使用我创建的这种模式:

/[a-zA-Z-!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?]/ 

此模式将检查它是否为字母和特殊字符。

答案 5 :(得分:0)

您需要测试RegExp的否定,因为您希望验证在失败时发出警报,因此只需在其前面添加!

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

See example →

答案 6 :(得分: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;
  } 
}