日期:2014-05-18  浏览次数:20787 次

关于javascript中的变量未定义问题
我写了一个脚本要在客户端判断验证码的输入
大体代码如下:
<%@   page   import= "java.util.* "   %>
<%   String   srad   =   " ";   %>   ---srad是我定义的全局变量,用来存放随机码的-----
下面是我的脚本:  
<script   for= "frmReg "   event= "onsubmit "   language= "JavaScript "   type= "text/JavaScript ">
var   strAlert   =   " ";
if(rad.value   ==   " ")
strAlert   +=   "验证码没有填写!\n ";
if(rad.value   !=   srad)       ----就是这里说未定义-----
strAlert   +=   "验证码错误!\n ";
if(strAlert   !=   " ")
{
window.alert(strAlert);
return   false;
}
else
return   true;
</script>
我的form:
<form   action= "login.jsp "   method= "post "   name= "frmReg ">
<input   type= "text "   name= "rad "   maxlength=5   style= "width:75 ">
<%
  Random   random=new   Random();
  for(int   i=0;i <=3;i++)
  {
          srad   =   srad+String.valueOf(random.nextInt(9));     ----我得到的随机码---
  }
  out.println(srad);
%> <br>
<input   type= "submit "   name= "nbtn "   value= "login ">
</form>
现在的问题是我点了btn它说,脚本里面的srad没有定义,
被他给卡住了,请各位高人赐教~~~~~~~~~~~


------解决方案--------------------
<%! String srad = " "; %>
在JSP里这样定义才是全局变量吧?
------解决方案--------------------
晕死,java变量怎么能拿到javascript里直接使用呢?
解决方法:

<%
Random random=new Random();
for(int i=0;i <=3;i++)
{
srad = srad+String.valueOf(random.nextInt(9)); ----我得到的随机码---
}
%>
移到
<% String srad = " "; %> ---srad是我定义的全局变量,用来存放随机码的-----
之下,

if(rad.value != srad) ----就是这里说未定义-----
改成
if(rad.value != <%=srad%=> ) ----就是这里说未定义-----
------解决方案--------------------
把你的 javascript改成
<script for= "frmReg " event= "onsubmit " language= "JavaScript " type= "text/JavaScript ">
var strAlert = " ";
if(rad.value == " ")
strAlert += "验证码没有填写!\n ";
if(rad.value != <%= srad%> ) ----改动过的地方-----
// 如果不行就加单引号 ' <%= srad%> '
strAlert += "验证码错误!\n ";
if(strAlert != " ")
{
window.alert(strAlert);
return false;
}
else
return true;
</script>
我用过的,可以在javascript使用java代码

------解决方案--------------------
楼上说得对,在javascript中可以嵌套java代码,不过反过来就不行
------解决方案--------------------
在客户端直接验证不太好吧!感觉好像有点儿失去了验证码的意义了!