我的代码是这样的:
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<img id="verifypic" src="ValidateCode.aspx" width="70" onclick="javascript:newverifypic();" alt="刷新验证码" height="25" /><script language="javascript" type="text/javascript">
    function ckValidate(){
        var vl = "<%=Session["CheckCode"] %>";//获得存储在Session中的验证码
        var enterVl = document.getElementById("TextBox1").value;
        if(vl != null)
        {
            if(enterVl.length <=0){
                alert("验证码不能位空!");
            }
            else if(enterVl.toUpperCase() != vl.toString()){
                alert("验证码错误!");
            }
        }        }        function newverifypic(){
                var verify = document.getElementById("verifypic");
                verify.setAttribute("src","ValidateCode.aspx?" + Math.random());
        }
    </script>问题是总是出现“验证码错误”,请问您能帮我解决一下吗?不甚感激!

解决方案 »

  1.   

    大小写的问题?你检验下v1和enterv1的值
      

  2.   

    var enterVl = document.getElementById("TextBox1").value; 
    将“TextBox1“改为页面源代码中<asp:TextBox/>对应的 input 控件的 id;因为服务器控件<asp:TextBox/>生成id的不是“TextBox1“
      

  3.   

    JavaScript能够检查的验证码,都很容易绕过去的哦,因为你的检查在客户端做,对方可以直接在客户端做欺骗,甚至自己写HTTP请求就是了,这样的验证码对服务器一点保护作用都没有。
      

  4.   

    大小写没问题,“melon23“说的也是不对,我也知道js可以直接写验证码的代码,重要的是我想搞明白我这里的错误出在了哪里?请大家针对这个问题去解答好不,假如出现问题没找到答案我怕我睡觉的不香了。谢谢大家!不过我可以肯定的是var vl = " <%=Session["CheckCode"] %>"这里出了什么问题,因为这里获得的Session值和在图片上显示的验证码不一样,我用alert(vl.toString())弹出来检验过了
      

  5.   

    大小写没问题的,因为vl的值全部是大写的,enterVl.toUpperCase() != vl.toString() 这里已经对输入值已经大写过滤了
      

  6.   

      var vl = " <%=Session["CheckCode"] %>";//获得存储在Session中的验证码 
    这一句不行,这样无法获得,原因是asp.net不能嵌套在js代码里,你不信你用断点看看。<%=Session["CheckCode"] %>还是<%=Session["CheckCode"] %>你可以查看源码看看也行,唯一办法是在生成时把生成的验证码赋值到一个textbox隐藏控件里,然后客户端验证填入的与这个赋值到的控件是否一样!
      

  7.   

    最简单的方法 就是使用alert()来看一下enterVl.toUpperCase() 与vl.toString() 是否"看上去"一样.
    当然可以使用debugger;并去掉禁用脚本调试来用高度器调一下看看为什么会不相等.