【问题标题】:Why does two recaptcha appear at one moment in time?为什么两个recaptcha 会同时出现?
【发布时间】:2020-02-14 04:15:20
【问题描述】:

我在一个页面的模式窗口中有两个表单(授权和注册)。对于这两种形式,我连接了一个不可见的 recaptcha (v2)。这是recaptcha init的代码:

var idCaptcha1, idCaptcha2;
var onloadReCaptchaInvisible = function () {
    //login
    idCaptcha1 = grecaptcha.render('recaptcha1', {
        "sitekey": "6LfpltgUAAAAAMW3PstNGrEk3pMos0TzN9jyL7mT",
        "callback": "onSubmitReCaptcha1",
        "size": "invisible"
    });
    //reg
    idCaptcha2 = grecaptcha.render('recaptcha2', {
        "sitekey": "6LfpltgUAAAAAMW3PstNGrEk3pMos0TzN9jyL7mT",
        "callback": "onSubmitReCaptcha2",
        "size": "invisible"
    });
};

function onSubmitReCaptcha1(token) {
    alert('test');
    sendForm('signin', idCaptcha1);
}

function onSubmitReCaptcha2(token) {
    sendForm('signup', idCaptcha2);
}

当用户提交任何表单时,我会尝试找出确切的表单,并执行我需要的验证码:

$('form').submit(function(event) {
    // отменим отправку форму на сервер
    event.preventDefault();

    switch($(this).closest('.modal').attr('id')){
        case 'signin':
            grecaptcha.execute(idCaptcha1);
        case 'signup':
            grecaptcha.execute(idCaptcha2);
    }

});

最后,这是发送表单函数的代码:

function sendForm(id,captcha){
    alert(id);
    let form = $('#'+id).find('form'),
        url  = form.attr('action'),
        formData = new FormData(form);
    formData.append('g-recaptcha-response', grecaptcha.getResponse(captcha));

    console.log(url);    
    console.log(formData);        
}

所以,验证码工作正常,而且事实上它们都同时出现。我做错了什么? 我怀疑$('form').submit() 有问题,但我找不到原因。

【问题讨论】:

    标签: javascript jquery web recaptcha captcha


    【解决方案1】:

    您忘记了每个case 末尾的break 语句。如果您匹配第一个案例并且没有break,它将通过并执行下一个案例,因此会显示两个recaptchas。

    $('form').submit(function(event) {
        // отменим отправку форму на сервер
        event.preventDefault();
    
        switch($(this).closest('.modal').attr('id')){
            case 'signin':
                grecaptcha.execute(idCaptcha1);
                break;
            case 'signup':
                grecaptcha.execute(idCaptcha2);
                break;
        }
    });
    

    【讨论】:

    • 妈的,我犯了这么幼稚的错误>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-19
    • 2016-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多