JavaScript验证失败

JavaScript验证失败,javascript,html,validation,Javascript,Html,Validation,StackExchange社区! 我的HTML表单验证有问题。以下表格用于注册页面,可在此处找到: PHP部分工作正常,但由于未知原因,验证失败 <form action="" method="post" name="reg" onSubmit="return validateForm()"> <div class="roundbox"><div class="grey">Register<br>Get a lot of advantages, o

StackExchange社区! 我的HTML表单验证有问题。以下表格用于注册页面,可在此处找到: PHP部分工作正常,但由于未知原因,验证失败

<form action="" method="post" name="reg" onSubmit="return validateForm()">
<div class="roundbox"><div class="grey">Register<br>Get a lot of advantages, only by making an account!<br><ul><li>Post Comments in Blog Posts;</li>
<li>Access the Members Area;</li>
<li>Enjoy Custom Titles and Other Features!</li></ul></div></div><br><br>     
            <label class="grey" for="username">Username:</label>        <br>
            <input class="field" type="text" name="username" id="username" value="" size="23" /><br><br>
            <label class="grey" for="email">Email:</label><br>
            <input class="field" type="text" name="email" id="email" size="23" /><br><br>
            <label class="grey" for="email">Password:</label><br>
            <input class="field" type="password" name="pass" id="pass" size="23" /><br><br>
            <input type="submit" name="submit" value="Create Account!" class="bt_register" /><br>
            <label class="grey">You will receive a e-mail with your password. Store it safely!</label>
            <div class="roundbox"><div class="grey" id="error"></div>
            <div class="grey" id="error2"></div>
            <div class="grey" id="error3"></div></div>
</form>
这是我的JavaScript:

<script type="text/javascript">
function validateForm()
{
var user=document.forms["reg"]["username"].value;
var pass=document.forms["reg"]["pass"].value;
if (user.length < 4 || user.length > 32) 
  {
document.getElementById("error").innerHTML="Invalid username specified:<br>Choose a username of 3 to 32 characters!";
  return false;
  }
    if (user == NULL || user == '') 
  {
document.getElementById("error").innerHTML="No username specified!";
  return false;
  }
if (pass.length < 4 || pass.length > 32) 
  {
document.getElementById("error2").innerHTML="Invalid password specified:<br>For safety reasons passwords have to be 3 to 32 characters long!";
  return false;
  }
if (pass == NULL || pass == '') 
  {
document.getElementById("error2").innerHTML="No password specified!";
      return false;
  }
}
</script>

函数validateForm()
{
var user=document.forms[“reg”][“username”].value;
var pass=document.forms[“reg”][“pass”].value;
如果(user.length<4 | | user.length>32)
{
document.getElementById(“error”).innerHTML=“指定的用户名无效:
请选择一个3到32个字符的用户名!”; 返回false; } 如果(用户==NULL | |用户=='') { document.getElementById(“错误”).innerHTML=“未指定用户名!”; 返回false; } 如果(通过长度<4 | |通过长度>32) { document.getElementById(“error2”).innerHTML=“指定的密码无效:
出于安全原因,密码长度必须为3到32个字符!”; 返回false; } 如果(通过==NULL | |通过=='') { document.getElementById(“error2”).innerHTML=“未指定密码!”; 返回false; } }

如果您愿意检查我提供给您的页面,您将看到用户名验证有效,但密码无效。

看起来表单在通过第一次验证后,会在尝试验证其他字段之前发布

输入有效用户名后,将发布表单,并跳过电子邮件地址+密码验证

尝试将其全部放在同一if语句中,以便在发布表单之前必须满足所有条件

我建议安装一个调试工具,比如firebug,它可以帮助您及时识别这一点


您可能还想研究现有的用于验证电子邮件地址的正则表达式方法,因为我怀疑网络上有一些很好的方法。

Javascript中没有空值。还有
null
即使用户验证不起作用,它也会抛出JS错误,正如您在firebug中可能看到的那样:“
…null未定义…
”。请参阅@lukas comment:它应该是
null
。哇!我只需要将NULL改为“NULL”,现在验证就可以了。非常感谢!:)
<script type="text/javascript">
function validateForm()
{
var user=document.forms["reg"]["username"].value;
var pass=document.forms["reg"]["pass"].value;
if (user.length < 4 || user.length > 32) 
  {
document.getElementById("error").innerHTML="Invalid username specified:<br>Choose a username of 3 to 32 characters!";
  return false;
  }
    if (user == NULL || user == '') 
  {
document.getElementById("error").innerHTML="No username specified!";
  return false;
  }
if (pass.length < 4 || pass.length > 32) 
  {
document.getElementById("error2").innerHTML="Invalid password specified:<br>For safety reasons passwords have to be 3 to 32 characters long!";
  return false;
  }
if (pass == NULL || pass == '') 
  {
document.getElementById("error2").innerHTML="No password specified!";
      return false;
  }
}
</script>