<table width="792" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="82">
        用 户 名:</td>
    <td align="left" width="170">
   
      <textarea style="width:90px"  rows="1" cols="1" id="UserName" onBlur="j_username()"></textarea>     
      <span class="STYLE2">*</span>
   </td>
   <td align="left"><span id="NameError" style="color: #ff0033; "></span></td>
  </tr>
</table>
能验证成功的
当把<textarea style="width:90px"  rows="1" cols="1" id="UserName" onBlur="j_username()"></textarea>   
改为<asp:TextBox ID="UserName" onBlur="j_username()"  runat="server" CausesValidation="True"></asp:TextBox>或
 <input id="UserName" name="UserName" type="text"  onBlur="j_username()" />
验证时出错:是缺少对象,出错的地方是
var userName = document.getElementById("UserName").value;

解决方案 »

  1.   

    var xmlHttp = false;
    try 
    {
      xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e)
    {
      try 
      {
        xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e2) 
      {
        xmlHttp = false;
      }
    }function j_username()
    {   
    document.getElementById("NameError").innerHTML = "";//清空错误信息
    var userName = document.getElementById("UserName").value;
    var reg = "[^a-zA-Z_0-9]";//判断用户名只能为字母,数字,下划线的正则表达式
    var reg1 = "\\D";//判断用户名必须以字母开头的正则表达式
    var xmlhttp
    if(userName == "")//用户名为空,不可以
    {
    document.getElementById("NameError").innerHTML = "<font color=\"red\" style=\"font-size:11px\">用户名不能为空!<font><br>";
    canSubmit = false;
    }
    else if(userName.length < 5||userName.length > 18)//判断用户名长度
    {
    document.getElementById("NameError").innerHTML = "<font color=\"red\" style=\"font-size:11px\">你输入的用户名长度太短!长度必须为5~18位!<font><br>";
    canSubmit = false;
    }
    else if(!userName.substring(0,1).match(reg1))//用户名不是以字母开头
    {
    document.getElementById("NameError").innerHTML = "<font color=\"red\" style=\"font-size:11px\">必须已字母开头!<font><br>";
    canSubmit = false;
    }
    else if(userName.match(reg))//用户名中出现其他特殊字符
    {
    document.getElementById("NameError").innerHTML = "<font color=\"red\" style=\"font-size:11px\">用户名只能是字母、数字、下划线!<font><br>";
    canSubmit = false;
    }
    else 
    {
        var url="CheckUserIs.aspx?userName="+escape(userName);
       // window.open(url);
        xmlHttp.open("GET", url, true);
        xmlHttp.onreadystatechange = function()
        {
        if (xmlHttp.readyState < 4) {
                                    document.getElementById("NameError").innerHTML="loading...";
                                        }
            if (xmlHttp.readyState == 4){
                                              if(xmlHttp.responseText=="1")   
                                                 {         
                                                      document.getElementById("NameError").innerHTML="<font color=\"red\" style=\"font-size:11px\">该用已存在</font>";   
                                                  }   
                                              else 
                                                 {   
                                                      document.getElementById("NameError").innerHTML="<font color=\"red\" style=\"font-size:11px\">可以注册</font>";   
                                                 }   
                                        }
         
        }
            xmlHttp.send(null);  
    }

    }
      

  2.   

    是这样的
    asp.net的服务器控件
    转换成客户端html的时候
    id是会变化的
    你可以察看源文件的时候看到。
      

  3.   

    用这个试试
    var userName = document.getElementById("<%=this.UserName.ClientID%>").value;