我编写了一个javascript函数来验证表单上的字段。此函数用于确保该字段不为空,不超过35个字符的限制,并且只包含字母字符和连字符( - )。我有代码,以确保该字段不为空,并且它不超过35个字符,但工作正常,但我添加了代码以验证字段为可用字符,我测试了它,将字段留空,以确保仍然有效但是,当我点击提交按钮时,该功能似乎根本没有验证,没有给我一个警报,只是提交。这是我的代码:
function validateFamily()
{
var family=document.getElementById('family');
var stringf = document.getElementById('family').value;
if (family.value=="")
{
alert("Family name must be filled out");
return false;
}
else if (document.getElementById('family').value.length > 35)
{
alert("Family name cannot be more than 35 characters");
return false;
}
else if (/[^a-zA-Z\-\]/.test( stringf ))
{
alert("Family name can only contain alphanumeric characters and hypehns(-)")
return false;
}
return true;
}
<form name="eoiform" method="POST" action="<?php echo $_SERVER["PHP_SELF"];?>" id="eoi" onsubmit="return validateFamily() && validateGiven() && validateMaleFemale() && validDate() && validateAddress() && validatePost() && validateParent() && validateWork() && validateHome() && validateMob() && validateCheckBoxes();">
<b>Student's Family Name</b>
<br>
<input type="text" id="family" name="family" /><?php echo $strmsgf; ?>
<input type="submit" name="submit" id="submit" value="submit" />
</form>
有人能告诉我如何修复我的代码吗?
答案 0 :(得分:3)
您的正则表达式已损坏。你已经逃脱了字符集周围的结束方括号。试试这个:
else if (/[^a-zA-Z0-9\-]/.test( stringf ))
另外,那里有很多奇怪的混乱,这很烦人但不致命:你真的需要在该方法中调用getElementById('family')多少次?一旦。
if (stringf=="")
{
alert("Family name must be filled out");
return false;
}
else if (stringf.length > 35)
{
alert("Family name cannot be more than 35 characters");
return false;
}
else if (/[^a-zA-Z0-9\-]/.test( stringf ))
{
alert("Family name can only contain alphanumeric characters and hypehns(-)")
return false;
}
return true;
答案 1 :(得分:1)
更新:
对不起,问题在于你的正则表达式,我错过了,改为完全正常工作:
var ck_password = /^[A-Za-z0-9-]/;
if(!ck_password.test(stringf))
{
alert("Family name can only contain alphanumeric characters and hypehns(-)")
}
chrome中的控制台,转到右上角的OPTIONS,选择TOOLS,然后选择DEVELOPER TOOLS。
答案 2 :(得分:0)
尝试重命名提交按钮,删除id并命名为“submit”(重命名为“doSubmit”或smth),它可能会导致问题并与表单的“提交”事件冲突。