Javascript名称验证

时间:2013-05-30 14:36:27

标签: javascript forms function validation

我编写了一个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>

有人能告诉我如何修复我的代码吗?

3 个答案:

答案 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),它可能会导致问题并与表单的“提交”事件冲突。