2013-05-30 138 views
1

我有一个javascript函数来验证我的表单上的字段。该功能应该确保该字段不为空,不超过35个字符的限制,并且只包含字母字符和连字符( - )。我有代码,以确保该字段不是空的,并且它不超过35个字符工作正常,但我添加了验证字段的可用字符的代码,我通过将字段留空以确保仍然有效但是当我点击提交按钮该功能似乎并没有验证,没有给我一个警报,只是提交。这里是我的代码:Javascript名称验证

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

会发出警报(“Alert”);在validateFamily()函数的开始工作? – konnection

+0

控制台在您的浏览器中的登录是您可能想要查看调试此类型的情况的东西,它显示了什么? – konnection

+0

@konnection如果你的意思是“姓氏必须填写”比如果我拿出可用的字符验证码比是的,它工作得很好,但目前它没有。 – AJJ

回答

1

更新:

对不起,问题是你的正则表达式,我错过了,改变这种完全正常的:

var ck_password = /^[A-Za-z0-9-]/; 

      if(!ck_password.test(stringf)) 
      { 

       alert("Family name can only contain alphanumeric characters and hypehns(-)") 

      } 

控制台中铬,转到选项在右上角络筒机,选择TOOLS,然后选择DEVELOPER TOOLS。

+0

刚刚尝试过,不幸的是没有运气,同样的问题。 – AJJ

+0

现在尝试,或者只是在您的代码中将您的正则表达式更改为我的答案中的正则表达式。希望它有帮助 – konnection

+1

完美的工作,非常感谢! – AJJ

0

尝试重命名提交按钮,删除ID和名称“提交”(重命名为“doSubmit”或smth),它可能会导致问题和与事件“提交”形式冲突。

+0

这种冲突将是浏览器中的严重错误。 –

2

您的正则表达式已损坏。你已经逃过了字符集周围的方形括号。试试这个:

else if (/[^a-zA-Z0-9\-]/.test(stringf)) 

此外,还有在那里有很多怪异的杂波,这很烦人,但不是致命的:有多少次,你真的需要在方法调用的getElementById(“家族”)?一旦。

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

那里有很多奇怪的混乱,那很烦人,但不是致命的:如果你在末尾加上else {return true},你可以摆脱那些'return false;'-lines系列'else if's并将最后一个布尔值更改为false。 (_这里的讽刺只是开玩笑) –