function checkPassword()
{
var form = document.fm_setpassword;
var pwd1 = form.fm_strNewPassword
var pwd2 = form.fm_strAgnPassword;
var old  = form.fm_strOldPassword; if (old.value.length==0) 
{
alert("请输入您当前的密码!");
old.focus();
return;
}

if (pwd1.value.length==0)
{
alert("请输入您的新密码!");
pwd1.focus();
return;
}
if (pwd1.value!=pwd2.value)
{
alert("两次输入的新密码不一致!");
pwd1.value="";
pwd2.value="";
pwd1.focus();
return;
}
if (old.value==pwd2.value)
{
alert("新密码不能和现有密码相同!");
pwd1.value="";
pwd2.value="";
pwd1.focus();
return;
}
if(!isHasDightLetter(pwd1.value))
{
alert("新密码必须包含字母和数字,并且最少为8位。");
pwd1.value="";
pwd2.value="";
pwd1.focus();
return;
}
var nResult = confirm("您确定要修改您的密码吗?")
if (!nResult) return; var strURL = "setpassword.asp";
strURL = strURL + "?mod=0";
form.action = strURL;
form.submit();
}function isHasDigit(str)
{
for(i=0;i<str.length;i++)
if((str.charAt(i))>'0' && (str.charAt(i)<'9'))
return true;
    return false;
}
function isHasLetter(str)
{
for(i=0;i<str.length;i++)
if(((str.charAt(i))>'a' && (str.charAt(i)<'z')) || ((str.charAt(i))>'A' && (str.charAt(i)<'Z')))
return true;
    return false;
}
function isHasDightLetter(str)
{
if(isHasDigit(str) && isHasLetter(str) && str.length>7) 
return true;
    return false;
}
</script>
现在检测数字和字母这一块 就是 isHasDightLetter 这里,当输入特殊字符的时候也不通过,好比输入 hb&^^!ashduhu1 这样的密码,也是不会通过的,请高手帮忙改下,只要有字母有数字有8位即可通过。

解决方案 »

  1.   


    function isHasLetter(str)
    {
      var re = /^[a-zA-Z]+$/ ;
      return re.test(str);
    }
      

  2.   

    有字母有数字8位以上function isHasLetter(str)
    {
      var re = /^[\w]{8,}$/ ;
      return re.test(str);
    }
      

  3.   

    这谁写的代码啊?不是瞎写的低效率代码么?
    function isHasDightLetter
    {
        re = /^[^\s]{8,20}$/
        if(!re.test(f.password.value)){
          alert("密码必须在8位到20位之间");
          f.password.focus();
          return false;
        }}密码最少量和最大量都要限制的。不然你的表真的能接受么?
      

  4.   


    function isHasDightLetter(str)
    {
        re = /^[^\s]{8,20}$/
        if(!re.test(str)){
          alert("密码必须在8位到20位之间");
          f.password.focus();
          return false;
        }}上面的那个有点问题,这个使用了参数传递
      

  5.   


    function isHasDightLetter(str)
    {
        re = /^[a-zA-z0-9]{8,20}$/
        if(!re.test(str)){
          alert("密码必须在8位到20位之间");
          f.password.focus();
          return false;
        }}function isHasDightLetter(str)
    {
        re = /^[\w]{8,20}$/
        if(!re.test(str)){
          alert("密码必须在8位到20位之间");
          f.password.focus();
          return false;
        }}这两个都可以
      

  6.   

    晕 楼上的最好看清楼主的要求再说话...<script type="text/javascript">
    <!--
    function isHasDigit(str)
        {
    var result = /^(?!\d+$)(?!\D+$)[a-zA-Z\d]{8}$/.test(str)
            return result
        } alert(isHasDigit("1222222"));
    alert(isHasDigit("aaaaaaa"));
    alert(isHasDigit("#$#$#qqq"));
    alert(isHasDigit("122aa222"));
    //-->
    </script>
      

  7.   


    <script type="text/javascript">
    <!--
    function isHasDigit(str)
        {
    var result = /^(?!\d+$)(?!\D+$)[a-zA-Z\d]{8,}$/.test(str)
            return result
        } alert(isHasDigit("122222222"));
    alert(isHasDigit("aaaaaaaaa"));
    alert(isHasDigit("#$#$#qqq"));
    alert(isHasDigit("122aa222222"));
    //-->
    </script>
      

  8.   


    function isHasDightLetter(str)
        {
            if(isHasDigit(str) && isHasLetter(str) && str.length>7) 
                return true;
            return false;
        }
    ============= 把上面这段代码直接换成下面这个就可以了===================    function isHasDightLetter(str)
        {
            var result = /^(?!\d+$)(?!\D+$)[a-zA-Z\d]{8,}$/.test(str);
            return result;
        }
      

  9.   

    <script language=javascript>
    function checkPassword()
    {
    var form = document.fm_setpassword;
    var pwd1 = form.fm_strNewPassword
    var pwd2 = form.fm_strAgnPassword;
    var old  = form.fm_strOldPassword; if (old.value.length==0) 
    {
    alert("请输入您当前的密码!");
    old.focus();
    return;
    }

    if (pwd1.value.length==0)
    {
    alert("请输入您的新密码!");
    pwd1.focus();
    return;
    }
    if (pwd1.value!=pwd2.value)
    {
    alert("两次输入的新密码不一致!");
    pwd1.value="";
    pwd2.value="";
    pwd1.focus();
    return;
    }
    if (old.value==pwd2.value)
    {
    alert("新密码不能和现有密码相同!");
    pwd1.value="";
    pwd2.value="";
    pwd1.focus();
    return;
    }
    if(!isHasDightLetter(pwd1.value))
    {
    alert("新密码必须包含字母和数字,并且最少为8位。");
    pwd1.value="";
    pwd2.value="";
    pwd1.focus();
    return;
    }
    var nResult = confirm("您确定要修改您的密码吗?")
    if (!nResult) return; var strURL = "setpassword.asp";
    strURL = strURL + "?mod=0";
    form.action = strURL;
    form.submit();
    }
    function isHasDigit(str)
        {
            for(i=0;i<str.length;i++)
                if((str.charAt(i))>'0' && (str.charAt(i)<'9'))
                    return true;
            return false;
        }
    function isHasLetter(str)
        {
            for(i=0;i<str.length;i++)
                if(((str.charAt(i))>'a' && (str.charAt(i)<'z')) || ((str.charAt(i))>'A' && (str.charAt(i)<'Z')))
                    return true;
            return false;
        }
    function isHasDightLetter(str)
        {
            var result = /^(?!\d+$)(?!\D+$)[a-zA-Z\d]{8,}$/.test(str);
            return result;
        }
    </script>
    还是不能正确判断。
      

  10.   

    当输入条件满足有字母有数字的时候还是提示 新密码必须包含字母和数字,并且最少为8位。
    好比我输入 asd!@#123
      

  11.   


    <input type="text" id="otxt" onblur="fnCheck();"/>
    <script type="text/javascript">
    <!--
    function isHasDightLetter(str)
    {
    var result = /^(?!\d+$)(?!\D+$)[a-zA-Z\d]{8,}$/.test(str);
    return result;
    } function fnCheck(){
    var opass = document.getElementById("otxt");
    if(!isHasDightLetter(opass.value)){
    alert("新密码必须包含字母和数字,并且最少为8位.");
    opass.value = "";
    return false;
    }
    }
    //-->
    </script>我这里没问题的 楼主检查下
      

  12.   

    可以啊,既然是密码就当然要输入特殊字符了啊,现在问题就是当有特殊字符的时候,即使有字母有数字有8位也会提示错误。
    好比输入 asd!sssssssssss9
      

  13.   


    <input type="text" id="otxt" onblur="fnCheck();"/>
    <script type="text/javascript">
    <!--
    function isHasDightLetter(str)
    {
    if(str.search(/\d/) > -1 && str.search(/[a-z]/i) > -1){
    result = /^[\S]{8,}$/.test(str);
    return result;
    }else{
    return false;
    }

    } function fnCheck(){
    var opass = document.getElementById("otxt");
    if(!isHasDightLetter(opass.value)){
    alert("新密码必须包含字母和数字,并且最少为8位.");
    opass.value = "";
    return false;
    }
    }
    //-->
    </script>