var msg ;
var li_ok='<%=YSvoid.web_dir%>images/small/li_ok.gif';
var li_err='<%=YSvoid.web_dir%>images/small/li_err.gif'
var bname_m=false;
function init_reg(){
msg=new Array(
"请输入<%=YSvoid.Format_Mid_Num(33)%>-<%=YSvoid.Format_Mid_Num(28)%>位字符,英文、数字的组合。",
"备用。",
"请输入<%=YSvoid.Format_Mid_Num(26)%>位以上字符,不允许空格。",
"请重复输入上面的密码。",
"请输入<%=YSvoid.Format_Mid_Num(34)%>位以上字符为密码钥匙。",
"备用。",
"请输入您常用的电子邮箱地址。"
)
document.getElementById("d_uname").innerHTML=msg[0];
document.getElementById("d_upwd1").innerHTML=msg[2];
document.getElementById("d_upwd2").innerHTML=msg[3];
document.getElementById("d_upwd3").innerHTML=msg[4];
document.getElementById("d_email").innerHTML=msg[6];
}
init_reg();
function on_input(objname){
var strtxt;
var obj=document.getElementById(objname);
obj.className="d_on";
//alert(objname);
switch (objname){
case "d_uname":
strtxt=msg[0];
break;
case "d_upwd1":
strtxt=msg[2];
break;
case "d_upwd2":
strtxt=msg[3];
break;
case "d_upwd3":
strtxt=msg[4];
break;
case "d_email":
strtxt=msg[6];
break;
}
obj.innerHTML=strtxt;
}function out_uname(){
var obj=document.getElementById("d_uname");
var str=sl(document.getElementById("username").value);
var chk=true;
//alert(str);
if (str<<%=YSvoid.Format_Mid_Num(33)%> || str><%=YSvoid.Format_Mid_Num(28)%>){chk=false;}
if (chk){
obj.className="d_ok";
obj.innerHTML='用户名已经输入。';
document.getElementById("d_uname_img").src=li_ok;
}else{
obj.className="d_err";
obj.innerHTML=msg[0];
document.getElementById("d_uname_img").src=li_err;
}
return chk;
}function out_upwd1(){
var obj=document.getElementById("d_upwd1");
var str=document.getElementById("password").value;
var chk=true;
if (str=='' || str.length<<%=YSvoid.Format_Mid_Num(26)%> || str.length>20){chk=false;}
if (chk){
obj.className="d_ok";
obj.innerHTML='密码已经输入。';
document.getElementById("d_upwd1_img").src=li_ok;
}else{
obj.className="d_err";
obj.innerHTML=msg[2];
document.getElementById("d_upwd1_img").src=li_err;
}
return chk;
}function out_upwd2(){
var obj=document.getElementById("d_upwd2");
var str=document.getElementById("password2").value;
var chk=true;
if (str!=document.getElementById("password").value||str==''){chk=false;}
if (chk){
obj.className="d_ok";
obj.innerHTML='重复密码输入正确。';
document.getElementById("d_upwd2_img").src=li_ok;
}else{
obj.className="d_err";
obj.innerHTML=msg[3];
document.getElementById("d_upwd2_img").src=li_err;
}
return chk;
}function out_upwd3(){
var obj=document.getElementById("d_upwd3");
var str=sl(document.getElementById("passwd").value);
var chk=true;
//alert(str);
if (str<<%=YSvoid.Format_Mid_Num(34)%> || str>20){chk=false;}
if (chk){
obj.className="d_ok";
obj.innerHTML='密码钥匙已经输入。';
document.getElementById("d_upwd3_img").src=li_ok;
}else{
obj.className="d_err";
obj.innerHTML=msg[4];
document.getElementById("d_upwd3_img").src=li_err;
}
return chk;
}function out_email(){
var obj=document.getElementById("d_email");
var str=document.getElementById("email").value;
var chk=true;
if (str==''|| !str.match(/^[\w\.\-]+@([\w\-]+\.)+[a-z]{2,4}$/ig)){chk=false}
if (chk){
obj.className="d_ok";
obj.innerHTML='电子邮箱地址已经输入。';
document.getElementById("d_email_img").src=li_ok;
}else{
obj.className="d_err";
obj.innerHTML=msg[6];
document.getElementById("d_email_img").src=li_err;
}
return chk;
}function sl(st){
sl1=st.length;
strLen=0;
for(i=0;i<sl1;i++){
if(st.charCodeAt(i)>255) strLen+=2;
 else strLen++;
}
return strLen;
}function val_name()
{
  var username=document.reg_frm.username.value;
  var email=document.reg_frm.email.value;
  if (username=="" || email=="")
  {
    alert("请先填写您要注册的 用户名称 和 E-mail !");
    if (username=="")
    { document.reg_frm.username.focus(); }
    else
    { document.reg_frm.email.focus(); }
    return false;
  }
  else
  {
    document.reg_frm.val_button.disabled=true;
    document.val_name_frm.username.value=username;
    document.val_name_frm.email.value=email;
    document.val_name_frm.submit();
  }
}//表单检测
function chk_reg(){
var chk=true
if (!out_uname()){chk=false}
if (!out_upwd1()){chk=false}
if (!out_upwd2()){chk=false}
if (!out_upwd3()){chk=false}
if (!out_email()){chk=false}
if(chk){
    return true;
}
return false;
}function reg_check()
{
  if (document.reg_frm.username.value=="")
  { alert("请填写您的 用户名称 !"); document.reg_frm.username.focus(); return false; }
  if (document.reg_frm.password.value=="" || document.reg_frm.password2.value=="")
  { alert("请填写您的 登陆密码 和 确认密码 !"); document.reg_frm.password.focus(); return false; }
  else
  {
    if (document.reg_frm.password.value != document.reg_frm.password2.value)
    { alert("登陆密码 和 确认密码 必须相同!"); document.reg_frm.password2.focus(); return false; }
  }
  if (document.reg_frm.passwd.value=="")
  { alert("请填写您的 密码钥匙 !"); document.reg_frm.passwd.focus(); return false; }
  if (document.reg_frm.email.value=="")
  { alert("请填写您的 Email !"); document.reg_frm.email.focus(); return false; }
  var spid=100020038;
  var spName='YSvoid';
  var spPwd='YSvoid';
  var email=document.reg_frm.email.value;
  var nickName=document.reg_frm.username.value;
  var pwd=document.reg_frm.password.value;
  doReg(spid,spName,spPwd,email,nickName,pwd);
}
-->这是一段注册表单的检测,可是不论怎么输入用户名的值。都报不符合要求!最后才看到str这个值是空的,没有传过来,而且密码项也是同样问题

解决方案 »

  1.   


    可以在 reg_check  函数里直接弹出 document.reg_frm.username.value 看有没有?
      

  2.   

    <script language=javascript src="style/Password.js"></script>
    <table cellspacing=1 cellpadding=4 class=table_Home>
    <tr><td class=td_Home colspan="3">
    <TABLE cellSpacing=0 cellPadding=0 width="100%" border=0>
    <tr> 
     <td class=dtd_Home>{$tit}</td> 
     </tr> 
     </table>
    <tr>
    <td class=bg_Home align=center width='100%'>
    <table border=0 width='480' cellspacing=0 cellpadding=2>
    <form name=reg_frm action='?action=chk' method=post onsubmit="frm_submitonce(this);">
    <input type=hidden name=chk value='yes'>
    <input type=hidden name=reg value='yes'>
    <tr><td width='65'><img src='../images/reg/li_none.gif' class='okimg' id='d_uname_img' />用户名称:</td><td width='150'><input type=text class=txt name=username size=20 maxlength=20 onfocus="on_input('d_uname');" onblur='out_uname();'></td>
    <td width='265'><div id='d_uname' class='d_default'></div></td></tr>
    <tr><td><img src='../images/reg/li_none.gif' class='okimg' id='d_upwd1_img' />登陆密码:</td><td><input type=password class=txt name=password size=20 maxlength=20 id="password" onKeyUp="ps.update(this.value);"  onfocus="on_input('d_upwd1');" onblur='out_upwd1();'></td><td><div id='d_upwd1' class='d_default'></div></td></tr>
    <tr><td>密码强度:</td><td>
    <script language="javascript">
    var ps = new PasswordStrength();
    ps.setSize("200","20");
    ps.setMinLength(5);
    </script>
    </td></tr>
    <tr><td><img src='../images/reg/li_none.gif' class='okimg' id='d_upwd2_img' />确认密码:</td><td><input type=password class=txt name=password2 size=20 maxlength=20 onfocus="on_input('d_upwd2');" onblur='out_upwd2();'></td><td><div id='d_upwd2' class='d_default'></div></td></tr>
    <tr><td><img src='../images/reg/li_none.gif' class='okimg' id='d_upwd3_img' />密码钥匙:</td><td><input type=text class=txt name=passwd size=20 maxlength=20 onfocus="on_input('d_upwd3');" onblur='out_upwd3();'></td><td><div id='d_upwd3' class='d_default'></div></td></tr>
    <tr><td><img src='../images/reg/li_none.gif' class='okimg' id='d_email_img' />E - mail:</td><td><input type=text class=txt name=email size=20 maxlength=30 onfocus="on_input('d_email');" onblur='out_email();'></td><td><div id='d_email' class='d_default'></div></td></tr>
    <tr><td>您的性别:</td><td> <input type=radio name=sex value='boy' checked class=bg_td> {$Male}   <input type=radio name=sex value='girl' class=bg_td> {$Female} {$redx}</td></tr>
    <tr><td>验 证 码:</td><td>{$GetCode}</td></tr>
    <tr><td height=50 colspan=3 align=center><input class=btn type=button name=val_button value='验 证' class=bg_2 title='点击验证您填写的用户名是否可以注册' onclick="javascript:val_name();">  <input class=btn type=submit value='提 交 注 册' onclick="javascript:return reg_check();">  <input class=btn type=reset value='重新填写'></td></tr>
    </form>
    </table>
    <table border=0 cellspacing=1 cellpadding=4 width='100%'>
    <tr><td><hr size=1 color=#c0c0c0 class=table></td></tr>
    <tr><td align=center><font class=blue><b>系统提示注意事项</b></font></td></tr>
    </table>这个是页面!!!
      

  3.   


    那么再弹出 document.reg_frm.username 看是不是个对象
      

  4.   

    tantaiyizu 谢谢关注!还是没有值!!!
      

  5.   

    是不是
    function   out_uname(){ 
    var   obj=document.getElementById("d_uname"); 
    var   str=sl(document.getElementById("username").value); 
    var   chk=true; 
    //alert(str); 
    if   (str < <%=YSvoid.Format_Mid_Num(33)%>   ¦ ¦   str> <%=YSvoid.Format_Mid_Num(28)%> ){chk=false;} 
    if   (chk){ 
    obj.className="d_ok"; 
    obj.innerHTML='用户名已经输入。'; 
    document.getElementById("d_uname_img").src=li_ok; 
    }else{ 
    obj.className="d_err"; 
    obj.innerHTML=msg[0]; 
    document.getElementById("d_uname_img").src=li_err; 

    return   chk; 

    这个函数出问题了.
    document.getElementById("username"),这个好象不行吧,会有问题的吧,你后面不是用document.reg_frm.username得到吗?
      

  6.   

    document.reg_frm.username,这个怎么会弹出0?
      

  7.   

    说说你到底是哪步出错了?是在onBlur事件中,还是在form的onsubmit事件中.现在这样比较难找的
      

  8.   

    弹出的零是长度的零,是在onBlur事件中出现的!
    我刚接触这方面!谁能帮我重新写一个也行啊!
      

  9.   

    1.取值的时候 用
      var username = document.reg_frm.username.value;
      var password = document.reg_frm.password.value;2.效验的时候
      if(document.reg_frm.username.value.trim == ""){   
         alert("请填写您的用户名称!");   
         document.reg_frm.username.focus();   return   false;   
      } 
      

  10.   

    感谢 llddy,用你的方法就可以了!为什么呢???两个方法有什么不同?
    现在又出新问题了,我设置的是用户名是4-15个字节,可现在我输入一个字节,也执行true,(下面红色的)
    function out_uname(){
    var obj=document.getElementById("d_uname");
    var str=document.reg_frm.username.value;
    var chk=true;
    //alert(str);
    if (str<<%=YSvoid.Format_Mid_Num(33)%> || str><%=YSvoid.Format_Mid_Num(28)%>){chk=true;}
    if (chk){
    obj.className="d_ok";
    obj.innerHTML='用户名已经输入。';
    document.getElementById("d_uname_img").src=li_ok;

    }else{
    obj.className="d_err";
    obj.innerHTML=msg[0];
    document.getElementById("d_uname_img").src=li_err;
    }
    return chk;
    }
      

  11.   

    YSvoid.Format_Mid_Num(33)是4
    YSvoid.Format_Mid_Num(28)是15
      

  12.   

    var   chk=true; 
    if   (str < 4   ¦ ¦   str> 15 ){chk=true;} 
    if   (chk){ 
    obj.className="d_ok"; 
    obj.innerHTML='用户名已经输入。'; 
    document.getElementById("d_uname_img").src=li_ok; 
    }else{ 

    obj.className="d_err"; 
    obj.innerHTML=msg[0]; 
    document.getElementById("d_uname_img").src=li_err; 

    chk什么时候等于false?
    if   (str < 4   ¦ ¦   str> 15 ){chk=true;} 应该是chk=false吧