Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 表格提交并重述TCHA_Javascript_Jquery_Html_Validation_Recaptcha - Fatal编程技术网

Javascript 表格提交并重述TCHA

Javascript 表格提交并重述TCHA,javascript,jquery,html,validation,recaptcha,Javascript,Jquery,Html,Validation,Recaptcha,这个代码有什么问题 $(function() { $('#my_form').submit(function(e) { e.preventDefault(); recaptcha_response_field = $('input#recaptcha_response_field').val(); recaptcha_challenge_field = $('input#re

这个代码有什么问题

 $(function() {
            $('#my_form').submit(function(e) {
                e.preventDefault();
                recaptcha_response_field = $('input#recaptcha_response_field').val();
                recaptcha_challenge_field = $('input#recaptcha_challenge_field').val();

                $.post('controller.php', {recaptcha_response_field : recaptcha_response_field, recaptcha_challenge_field : recaptcha_challenge_field}, function(data) {
                if(data == 0) {
                    alert('no');
                } else {
                    alert('submit')
                    $('#my_form').submit();
                }
            }); 
            })
        });
我在表格中使用recaptcha。当用户正确输入验证码时,将执行这些代码行

alert('submit')
$('#my_form').submit();
那么胖,那么好。问题是表单无法提交。我想这行代码又被执行了

$('#my_form').submit(function(e) {

有什么建议吗?

我还没有测试过,但是试试这个。您是对的,
.submit
功能再次被触发

$(function() {
    $('#my_form').submit(function(e) {
        'use strict';

        var recaptcha_response_field = $('input#recaptcha_response_field').val(),
            recaptcha_challenge_field = $('input#recaptcha_challenge_field').val(),
            submitForm = true;

        $.post('controller.php', {
                recaptcha_response_field : recaptcha_response_field,
                recaptcha_challenge_field : recaptcha_challenge_field
            }, function(data) {
                if(data == 0) {
                    submitForm = false;
                }
        }); 

        if(!submitForm) {
            e.preventDefault();
        }
    })
});

您可以在所有的验证之后使用

$('#my_form').unbind('submit');
然后定期使用

$('#my_form').submit();

使用全局标志(布尔变量)来指示是否可以提交表单。如果(data==0){return false;}否则{return true;}@soderslatt可能会起作用,但如果我没有弄错的话,在大多数情况下最好使用
preventDefault()
:@rink.attendant.6您是对的,preventDefault()可能是一个更好的选择,在这种情况下,它不会按预期工作。您正在尝试在异步AJAX回调中
e.preventDefault()
。表单将在此之前执行其默认提交事件。@MattStone修复了…我想。