微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Recaptcha v3 与 Jquery 选择器不兼容

如何解决Recaptcha v3 与 Jquery 选择器不兼容

我已经在我网站的评论表单上实现了 Recaptcha v3(使用 staticman),但它似乎不想加载我用来显示响应的 jquery 函数

相关代码如下:

(function ($) {
  console.log('On page load code ran');
  var $comments = $('.js-comments');

  $('#new-comment.js-form').submit(function () {
    console.log('js-form.onsubmit code ran');
    event.preventDefault();
    var form = this;

这是表格:

<form class="js-form form" id="new-comment" method="post" action="{{ site.staticman_url }}">
  <input type="hidden" name="options[origin]" value="{{ page.url | absolute_url }}">
  <input type="hidden" name="options[parent]" value="{{ page.url | absolute_url }}">
  <input type="hidden" id="comment-replying-to-uid" name="fields[replying_to_uid]" value="">
  <input type="hidden" name="options[slug]" value="{{ page.url | remove:'.html' | remove_first:'/' }}">
  <input type="hidden" name="options[reCaptcha][siteKey]" value="{{ site.reCaptcha.siteKey }}">
  <input type="hidden" name="options[reCaptcha][secret]"  value="{{ site.reCaptcha.secret }}">

  <div class="textfield">
    <label for="comment-form-message"><h2>Add Comment<small><a rel="nofollow" id="cancel-comment-reply-link" href="{{ page.url | absolute_url }}#respond" style="display:none;">(cancel reply)</a></small></h2>
      <textarea class="textfield__input" name="fields[message]" type="text" id="comment-form-message" placeholder="Your comment (markdown accepted)" required rows="6"></textarea>
    </label>
  </div>

    <div class="textfield narrowfield">
      <label for="comment-form-name">Name
        <input class="textfield__input" name="fields[name]" type="text" id="comment-form-name" placeholder="Your name (required)" required/>
      </label>
    </div>

    <div class="textfield narrowfield">
      <label for="comment-form-email">E-mail
        <input class="textfield__input" name="fields[email]" type="email" id="comment-form-email" placeholder="Your email (optional)"/>
      </label>
    </div>

    <div class="textfield narrowfield hp">
      <label for="hp">
        <input class="textfield__input" name="fields[hp]" id="hp" type="text" placeholder="Leave blank">
      </label>
    </div>

    <button class="button g-recaptcha" id="comment-form-submit"
        data-sitekey="{{ site.reCaptcha.siteKey }}"
        data-callback='onSubmit'
        data-action='submit'>
      Submit
    </button>

</form>

<script>
  function onSubmit(token) {
    console.log('james is great')
    event.preventDefault();
    document.getElementById("new-comment").submit();
  }
</script>

js-form.onsubmit 代码运行从未出现在我的日志中,即使我在使用 v2 时运行了该代码

表单最终处理得很好,但发生的情况是页面重定向评论处理程序,而不是向用户显示结果。所以我知道所有后端都很好,我只是无法让 recaptcha 正确地与 Ajax 通信。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?