我的代码主要是个简单的表单验证:但是按"注册"按钮就让IE7卡住了,如果我把if(!isRepEx(strUserName)) 和 function isRepEx(strUserName) 注释了,
这样其他的代码能正常运行,并且不出现问题!我不知道为什么,请高手指点!
<script type="text/javascript">
function checkdata()
{ var strUserName=form1.userName.value.toLowerCase();

if(!checkUserName(strUserName)) return false;//检查用户名

}

function checkUserName(strUserName)
{

if(isWhite(strUserName))//检查空白字符
{
alert("请不要输入空白字符");
form1.userName.focus();
return false;
}
if(strUserName.length<3||strUserName.length>16)//检查用户名的长度
{
alert("请输入3-15位的用户名");
form1.userName.focus();
return false;
}

//@@@@@
if(!isRepEx(strUserName))//检查用户名是否符合正则表达式
{
alert("请不要输入的名由数字,小写字母,-组成用户名!");
form1.userName.focus();
return false;
}
}
//checkUserName()函数的子函数

function isWhite(strUserName)
{
var white=" /t/n/r";
for(var i=0;i<strUserName.length;i++)
{
for(var j=0;i<white.length;j++)
{
if(strUserName.charAt(i)==white.charAt(j))
{
return true;
}
}
}

}
////@@@@@@@@@
function isRepEx(strUserName)
{
var regexUser=/^[a-z0-9][\w-]*[a-z0-9]$/i;//i 忽略大小写
if(regexUser.test(strUserName))
{
return true;
}
}

</script>
给出 html代码:<body>
<form name="form1" method="post" action="1.html" onsubmit="return checkdata()">
  <table border="1">
    <tr>
      <td>用户名:</td>
      <td><input type="text" name="userName"  /></td>
    </tr>
    <tr>
      <td>密码:</td>
      <td><input type="text" name="pwd1" /></td>
    </tr>
    <tr>
      <td >确定密码:</td>
      <td><input type="text" name="pwd2" /></td>
    </tr>
    <tr>
      <td colspan="2" align="center"s><input type="submit" name="submit" value="注册" /></td>
    </tr>
  </table>
</form>
</body>

解决方案 »

  1.   


    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    </head><body>
    <form name="form1" method="post" action="1.html" onsubmit="return checkdata()">
      <table border="1">
        <tr>
          <td>用户名:</td>
          <td><input type="text" name="userName"  /></td>
        </tr>
        <tr>
          <td>密码:</td>
          <td><input type="text" name="pwd1" /></td>
        </tr>
        <tr>
          <td >确定密码:</td>
          <td><input type="text" name="pwd2" /></td>
        </tr>
        <tr>
          <td colspan="2" align="center"s><input type="submit" name="submit" value="注册" /></td>
        </tr>
      </table>
    </form></body>
    </html>
    <script type="text/javascript">
        function checkdata()
        {        var strUserName=form1.userName.value.toLowerCase();        if(!checkUserName(strUserName)) return false;//检查用户名
            
        }
        
        function checkUserName(strUserName)
        {        if(isWhite(strUserName))//检查空白字符
            {
                alert("请不要输入空白字符");
                form1.userName.focus();
                return false;
            }        if(strUserName.length<3||strUserName.length>16)//检查用户名的长度
            {
                alert("请输入3-15位的用户名");
                form1.userName.focus();
                return false;
            }
           
    //@@@@@        if(!isRepEx(strUserName))//检查用户名是否符合正则表达式
            {
                alert("请不要输入的名由数字,小写字母,-组成用户名!");
                form1.userName.focus();
                return false;
            }
    return true; //你这里应该少个return true 吧,我给你加上了。
        }
        //checkUserName()函数的子函数
        
        function isWhite(strUserName)
        {
            var white=" /t/n/r";
            for(var i=0;i<strUserName.length;i++)
            {
                for(var j=0;j<white.length;j++) //这里错了,你原先是:for(var j=0;i<white.length;j++) ,你把中间的j写成了i ,导致死循环
                {
                    if(strUserName.charAt(i)==white.charAt(j))
                    {
                        return true;
                    }
                }
            }
            
        }
    ////@@@@@@@@@        function isRepEx(strUserName)
        {
    return true;        var regexUser=/^[a-z0-9][\w-]*[a-z0-9]$/i;//i 忽略大小写
            if(regexUser.test(strUserName))
            {
                return true;
            }else{
    return false;
    }    }

    </script>