2017-08-01 1 views
2

私はポップアップモデルで開いた複数のフィールド& google recaptchaのフォームを持っています。GoogleのreCAPTCHAがブートストラップモデルで2回目に失敗しました

enter image description here

しかし、私は、ポップアップを閉じて、私が得たその時エラー「ないFound.The要求されたURLは、このサーバ上で見つかりませんでした」でポップアップ秒の時間を開こうとします。

<div id="RecaptchaField2"></div> 

Javascriptを:: enter image description here

は、ここに私のHTMLコードです。この問題は、先週から私を拷問され、それがなぜ起こるか私はまだ把握することができませんでし

<script type='text/javascript'> 
    var CaptchaCallback = function() { 
     if ($('#RecaptchaField2').length) { 
     grecaptcha.render('RecaptchaField2', {'sitekey' : 
      '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
     } 
    } 

    $(".inq-button").click(function(){ 
     setTimeout(function() { 
      var script = document.createElement('script'); 
      script.src = 'https://www.google.com/recaptcha/api.js? 
      onload=CaptchaCallback&render=explicit'; 
      script.type = 'text/javascript'; 
     document.body.parentNode.appendChild(script);   
    }, 100); 
    }); 
</script> 

私はこれについて適切な提案をしますか?

どんな種類のヘルプが高く評価されます。

ありがとうございます。

+0

いつ動的に追加されたrecaptcha 'script'要素を削除しますか? –

+0

@YohanesGultom、私は onclick関数の始めにスクリプト要素を削除しようとしました。 –

+0

正常に動作していることを確認しましたか? '$("。inq-button ")の中で実行されることは想定されていません。 –

答えて

1

このスクリプトを使用し、それは意志ワーキング。

<script> 
    var CaptchaCallback = function() { 
    if ($('#RecaptchaField1').length) { 
     grecaptcha.render('RecaptchaField1', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
    } 
    if ($('#RecaptchaField2').length) { 
     grecaptcha.render('RecaptchaField2', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 
    } 
} 

var j = 1; 

$(".inq-button").click(function(){ 


    setTimeout(function() { 
    if(j){ 
     var script = document.createElement('script'); 
     script.src = 'https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit'; 
     script.type = 'text/javascript'; 
     document.body.parentNode.appendChild(script); 
} 
else 
{ 
    $('#RecaptchaField2').empty(); 
    removejscssfile("api.js", "js"); //remove all occurences of "somescript.js" on page 
    var onloadCallback = function() { 

     if ($('#RecaptchaField2').length) { 
      grecaptcha.render('RecaptchaField2', {'sitekey' : '6LdG1ioUAAAAANOH2BnJO_5zv0NE2UNZS9jou7Yh' 
     }); 


    } 
    }; 
    var script = document.createElement('script'); 
    script.src = 'https://www.google.com/recaptcha/api.js?onload=CaptchaCallback&render=explicit'; 
    script.type = 'text/javascript'; 
    document.body.parentNode.appendChild(script); 
    } 

    j = 0; 

    }, 100); 

    }); 


function removejscssfile(filename, filetype){ 
    var targetelement=(filetype=="js")? "script" : (filetype=="css")? "link" : "none" //determine element type to create nodelist from 
    var targetattr=(filetype=="js")? "src" : (filetype=="css")? "href" : "none" //determine corresponding attribute to test for 
    var allsuspects=document.getElementsByTagName(targetelement) 
    for (var i=allsuspects.length; i>=0; i--){ //search backwards within nodelist for matching elements to remove 
    if (allsuspects[i] && allsuspects[i].getAttribute(targetattr)!=null && allsuspects[i].getAttribute(targetattr).indexOf(filename)!=-1) 
    allsuspects[i].parentNode.removeChild(allsuspects[i]) //remove element by calling parentNode.removeChild() 
    } 
} 
</script> 
+0

完璧に動作します!あなたは私の多くの時間を節約します。ありがとう!!! –

1

あなたはgrecaptcha.reset()

しかし、この機能が動作するためには、あなたがこのように明示的にreCaptachaをレンダリングする必要がされる前にキャプチャをクリアレンダリングする必要がある必要があります。

<script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit" async defer></script> 
+0

@CKG、私はすでにこの関数を使ってreCaptachaを明示的にレンダリングしようとしましたが、エラー "オブジェクトが見つかりません! " –

関連する問題