日期:2014-05-16  浏览次数:20386 次

JSP中的JS不能重复执行的问题
页面是登录的页面,输入用户名密码后要获取短信验证码,点击获取短信验证码的时候会判断用户名密码是否正确,正确就发送短信验证码,发送成功后会有10分钟的缓冲,缓冲过后在点击获取短信验证码就没反应。
var n = 0;   
var intervalID;    
function setEnable(){
    if(n==10){
        document.getElementById('aId').value = "获取短信码";
     $("#aId").attr("onClick","getDynamicPassword()");
        n=0;

   // 有时稍后   
   clearInterval(intervalID);   
    }else{
     document.getElementById('aId').onclick="javascript:void(#);";
        document.getElementById('aId').value = "重新获取("+(10-n)+ ")"; 
    }  
    n++;    
}
function setEnable1(){
    if(n==10){
        document.getElementById('getsmscode').value = "获取短信短信码";
     $("#getsmscode").attr("onClick","getValidateNumber()");
        n=0;

   // 有时稍后   
   clearInterval(intervalID);   
    }else{
     document.getElementById('getsmscode').onclick="javascript:void(#);";
        document.getElementById('getsmscode').value = "重新获取("+(10-n)+ ")"; 
    }  
    n++;    
}

//获取动态口令
function getDynamicPassword() {
var login_name = $.trim($("#login_name").val());
var password = $.trim($("#password").val());
if(check(login_name,password)){
MessagePasswordLoginAction.validateUser(login_name,password,clientip,validateResult);
intervalID = window.setInterval("setEnable()",1000);
}
}
JavaScript 短信 验证码 密码 JSP

------解决方案--------------------
你的代码jquery和原生javascript混用,比较混乱。
我用jquery整理了一个demo给你看看吧,jquery的引用你自己更改就好了。

<!doctype html>

<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
<script src="jquery.js"></script>
<script type='text/javascript'>
var n = 10;   
   
function setEnable(){ 
    
        if(n===0) {
            $('#aId').val("获取短信码");
            $("#aId").attr("onClick","getDynamicPassword();setEnable();");
            n=10;    
        }
        else{                   
               $('#aId').attr("onClick","javascript:void(#);");
    &n