Google recaptcha исчезает после второго нажатия на кнопку регистрации на навигационной панели - PullRequest
0 голосов
/ 04 февраля 2019

На моем сайте recaptcha исчезает после второго нажатия на кнопку регистрации или кнопку домой в верхней панели навигации.Пользователь может зарегистрироваться без проверки.Как это решить.

<h2>Create Blog</h2>

<%= simple_form_for(resource, as: resource_name, url: registration_path(resource_name), class: "form-horizontal" ) do |f| %>
  <%= f.error_notification %>

  <div class="form-inputs">
    <%= f.input :username, required: true, autofocus: true, hint: 'no special characters, no numbers only letters [a-z]' %>
    <%= f.input :password, required: true, hint: ("#{@minimum_password_length} characters minimum" if @minimum_password_length) %>
    <%= f.input :password_confirmation, required: true %>
    <div id="g-recaptcha" class="g-recaptcha" data-sitekey="6LcOGEgUAAAAAOxXmBxxxxxxxx"></div>
  </div>

  <div class="form-actions">
    <%= f.button :submit, "Create Blog", data: { disable_with: "This may take upto 2 minutes... "} %>
  </div>
<% end %>

<%= render "devise/shared/links" %>
<script>
  var captcha_interval;
  var myCallback=function(){
    document.getElementsByName('commit')[0].disabled=false;
  };
  var onloadCallback = function() {
    document.getElementsByName('commit')[0].disabled=true;
    grecaptcha.render(
     document.getElementById('g-recaptcha'),
     {
       callback: myCallback,
       sitekey: "6LcOGEgUAAAAAOxXmBVgxxxxxx"
     });
  };
</script>

1 Ответ

0 голосов
/ 04 февраля 2019

<html>
  <head>
    <title>reCAPTCHA demo: Explicit render for multiple widgets</title>
    <script type="text/javascript">
      var verifyCallback = function(response) {
        alert(response);
      };
      var onloadCallback = function() {
        grecaptcha.render('example3', {
          'sitekey' : '6LcOGEgUAAAAAOxXmBVgxxxxxx',
          'callback' : verifyCallback,
          'theme' : 'dark'
        });
      };
    </script>
  </head>
  <body>
    <!-- POSTs back to the page's URL upon submit with a g-recaptcha-response POST parameter. -->
    <form action="?" method="POST">
      <div id="example3"></div>
      <br>
      <input type="submit" value="Submit">
    </form>
    <script src="https://www.google.com/recaptcha/api.js?onload=onloadCallback&render=explicit"
        async defer>
    </script>
  </body>
</html>

Согласно ссылке google-captcha , вам не хватает

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

после заполнения формы.

Пожалуйста, попробуйте добавить после формы и дайте мне знать

...