Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JavaScript中数字字符的表单验证_Javascript - Fatal编程技术网

JavaScript中数字字符的表单验证

JavaScript中数字字符的表单验证,javascript,Javascript,我想使用JavaScript执行表单验证,以检查输入字段是否只包含数字字符。到目前为止,验证检查字段是否为空-这很好。但是,数字字符验证不起作用。如果有任何帮助,我将不胜感激。非常感谢 <script type="text/javascript"> //form validation function validateForm() { var x=document.forms["cdp_form"]["univer_number"].value if (x==null || x=="

我想使用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" />

//表单验证
函数validateForm()
{
var x=文件.forms[“cdp\U表单”][“univer\U编号”]。值
如果(x==null | | x==“”)
{
警报(“必须填写大学编号(URN)字段”);
cdp_form.univer_number.focus();
返回false;
}
else if(是否有效=/^[0-9]+$/.test(x))
{
警报(“大学编号(URN)字段必须有数字字符”);
cdp_form.univer_number.focus();
返回false;
}
}

在你写有
的行中,如果(is_valid=/^[0-9]+$/.test(x))
,你在做一个简单的赋值,而不是测试它是否与正则表达式匹配。

你的测试条件有点奇怪:

else if (is_valid = /^[0-9]+$/.test(x))
为什么与
的冗余比较有效?只要做:

else if (/^[0-9]+$/.test(x))
尽管您正在使用的正则表达式将匹配数字,并且只匹配数字-您需要将其更改为匹配任何非数字的内容-例如
/^[^0-9]+$/

更好的方法是,完全去掉正则表达式并使用:


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

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

如果正则表达式必须是数字,则可以在Javascript中使用IsNumeric

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

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


我知道这是一个老帖子,但我想我会发布对我有用的东西。我根本不要求填写字段,但如果是,则必须填写数字:

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;
  } 
}

您的模式仍将接受此输入
@$@#123
广告@#12
。使用我创建的模式:

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

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

“不起作用。”“这是描述问题的糟糕方式。什么不起作用?你有错误吗?它没有提供我想要的验证错误。别担心,问题已经解决了——请看公认的答案。我担心,因为我希望您接下来的问题有更好的描述。尽管看起来很奇怪,但它仍然会产生正确的结果(至少在chrome中是如此),非常感谢你的回答。它很有效——很容易忽略这样的错误。
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;
  } 
}
/[a-zA-Z-!@#$%^&*()_+\=\[\]{};':"\\|,.<>\/?]/