我想使用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 :(得分: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>#@$@#123
或ad!@#12<b>
。使用我创建的这种模式:
/[a-zA-Z-!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?]/
此模式将检查它是否为字母和特殊字符。
答案 5 :(得分:0)
答案 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;
}
}