提交仅适用于第二次点击

Submit only works on second click

我有一个通过 Google reCaptcha 验证的表格。但现在我必须点击提交按钮两次。我找不到原因。

我的表格是这样构建的(Smarty):

<form method="post" id="form">
   <input type="hidden" name="action" value="misdaden">
     <table>
        {foreach from=$misdaden item=item}
           <tr>
                <td class="coll">{$item['id']}</td>
                <td class="coll">{$item['name']}</td>
                <td class="coll">{$item['minmoney']}</td>
                <td class="coll">{$item['maxmoney']}</td>
                <td class="coll">{$item['difficulty']}</td>
                <td class="coll">{$item['percentage']}%</td>
                <td class="coll"><input type="radio" style="width:20px;" name="value" value={$item['id']} /></td>
           </tr>
        {/foreach}
    </table>
    <input type="submit" value="Misdaad plegen!" name="submit" class="submit" />
    <!--input class="button good large" name="submit" type="submit" value="Pleeg misdaad!"-->
</form>

我的脚本是 (JQuery):

$('#form').submit(function(e) {
    e.preventDefault();
    grecaptcha.ready(function() {
    grecaptcha.execute('6LesiMAUAAAAAAJ8G94kKbXxJj62_U2ajn-dzJzF', {action:'misdaden'})
              .then(function(token) {
                    $('#form').prepend('<input type="hidden" name="token" value="'+ token +'">');
                    $('#form').unbind('submit').submit();
                });
    });
});

我可能遗漏了一些明显的东西,但是什么?

在 jquery 脚本中,您在执行验证码时取消绑定表单的提交事件处理程序,这不是必需的。 只需提交表格,见下文

$(document).ready(function() {
    grecaptcha.ready(function() {
    grecaptcha.execute('6LesiMAUAAAAAAJ8G94kKbXxJj62_U2ajn-dzJzF', {action:'misdaden'})
              .then(function(token) {
                    $('#form').prepend('<input type="hidden" name="token" value="'+ token +'">');
                    $('#form').submit();
                });
    });
});