如何在用户验证后重置recaptcha并使其过期?

时间:2017-04-15 03:12:31

标签: javascript jquery recaptcha

好的,所以到目前为止,我试图找出的代码是:

function recaptchaCallback() {
    $('#submitBtn').removeClass('btn-hide');
    $('#submitBtn').addClass('btn-show');
if (grecaptcha.getResponse() == ''){
    $('#submitBtn').addClass('btn-hide');
    $('#submitBtn').removeClass('btn-show');
    grecaptcha.reset();
}
}

我想做的事情是这样的:如果recaptcha =过期,那么就这样做{}

if (grecaptcha.getResponse() == ''){

我认为接近我的需要,但是在用户验证它们是人类后,我们如何确定重新接收是否已经过期。如果用户验证然后没有按下提交按钮,则重新计算在60秒后过期。此时需要重新验证,因此在发生这种情况时禁用提交按钮也是有意义的。这就是我想要完成的事情。

2 个答案:

答案 0 :(得分:1)

setInterval可以在执行代码之前等待60秒。

function recaptchaCallback() { 
   $('#submitBtn').removeClass('btn-hide'); 
   $('#submitBtn').addClass('btn-show'); 

   setInterval(function () { 
      $('#submitBtn').addClass('btn-hide'); 
      $('#submitBtn').removeClass('btn-show'); 
      grecaptcha.reset(); 
      clearInterval(this); 
}, 60000); 
}

答案 1 :(得分:0)

采取Ty Q.的解决方案,我注意到它有效,但是不断射击,所以它只是第一次工作。一旦setInterval被触发,即使使用clearInterval,它也会每60秒触发一次。我研究了这个,并提出了这个解决方案。

function recaptchaCallback() {
  $('#submitBtn').removeClass('btn-hide');
  $('#submitBtn').addClass('btn-show');
  var timesRun = 0;
  var interval = setInterval(function(){
    timesRun += 1;
      if(timesRun === 1){
        $('#submitBtn').addClass('btn-hide');
        $('#submitBtn').removeClass('btn-show');
        grecaptcha.reset();
        clearInterval(interval);
    }
  }, 60000);
}