环境:Visual Studio 2008 
语言:C# 
程序:ASP.NET 首先我在后台加载如下代码: 
protected void Page_Load(object sender, EventArgs e) 
    { 
        if(!Page.IsPostBack) 
        { 
            LinkButton2.Attributes.Add("onclick","checkpassword("+TextBox8.Text+")"); 
        } 
    } 
注:TextBox8为密码输入框。LinkButton2的Text值为“检查密码”。 然后在前台编写如下代码: 
function checkpassword(textboxvalue) 
      { 
            if(this.form1.TextBox8.value!=null&&this.form1.TextBox8.value!="") 
            { 
                var str=textboxvalue; 
                var Expression=/^[A-Za-z0-9]{7,10}$/; 
                var objExp=new RegExp(Expression); 
                if(objExp.test(str)==false) 
                { 
                    alert("密码必须由7-10位字母或数字组成!"); 
                    //document.getElementById("Label18").innerHTML="密码必须由7-10位字母或数字组成!"; 
                    return; 
                } 
                else 
                { 
                    alert("密码输入无误!"); 
                    //document.getElementById("Label18").innerHTML="密码输入无误!"; 
                    return; 
                } 
            } 
            else 
            { 
                alert("请先输入密码!"); 
                this.form1.TextBox8.value=""; 
                this.form1.TextBox8.focus(); 
            } 
      } 
现在问题出来了: 
不管我在密码输入框中输入的密码合不合乎正则表达式规范,最终都会出现alert("密码输入无误!"); 
alert("密码必须由7-10位字母或数字组成!");根本不会出现。 
就是说不管我的密码输入对不对,它都会提示我对的。 
请问我的问题到底出在哪里?该如何修改???? 以下是有人给我的回帖原文:已经在load事件里执行  LinkButton2.Attributes.Add("onclick","checkpassword("+TextBox8.Text+")"); 
所以在以后不管你在TextBox8输入什么值,当你点击LinkButton2时传递的TextBox8.Text都是load时的值有没人告诉我,以上回帖是什么意思?我想知道具体代码该怎么写????

解决方案 »

  1.   


    if(objExp.test(str)==false) 
                    { 
                        alert("密码必须由7-10位字母或数字组成!"); 
                        //document.getElementById("Label18").innerHTML="密码必须由7-10位字母或数字组成!"; 
                        return; 
                    } 
    换成这个试试if(objExp.exec(str)==null) 
                    { 
                        alert("密码必须由7-10位字母或数字组成!"); 
                        //document.getElementById("Label18").innerHTML="密码必须由7-10位字母或数字组成!"; 
                        return; 
                    } 
      

  2.   

    if(objExp.test(str)==false) 
    倒下
    if("False"==objExp.test(str))试下
      

  3.   


    已经在load事件里执行  LinkButton2.Attributes.Add("onclick","checkpassword("+TextBox8.Text+")"); 
    所以在以后不管你在TextBox8输入什么值,当你点击LinkButton2时传递的TextBox8.Text都是load时的值 
    这个意思应该是第一次的page_load执行时的textbox8.text的值保存了(保存时间应该是和当前浏览器窗口的生命周期一样)。后面在执行的时候用的还是第一次的值。你试试第一次你输入的是正确的,你第二次输入错误的是不是不弹alert("密码必须由7-10位字母或数字组成!");如果是那可能就是缓存了第一次的值,具体怎么解决我也不知道,我会继续关注此贴,如有解决方案请发出来学习一下。