jquery $(“#form”)。submit()没有被调用

时间:2011-10-21 21:11:18

标签: php jquery recaptcha

如果用户在数据库中设置了阻止属性,我在页面上有一个需要验证码的表单。

$("#expressform").submit(function() {
    if($("#op").val() == "")
            return false;
    if($("#tagbar").val() == "")
            return false;
    $.post("getallowed.php", function(data) {
            if(data == "true")
                    submitNormal();
            else if(data == "false"){
                    displayCaptcha();
            }
    });
    return false;
});

如果不允许用户,则调用displayCaptcha函数而不是仅提交表单。

function displayCaptcha(){
    $.post("expresscaptcha.php", function(data) {
            var string = data;
            $("#expressformdiv").html(string);
            Recaptcha.create("xxxxxxxxxxx", "captcha",
                    {
                            theme: "red",
                            callback: Recaptcha.focus_response_field
                    }
            );
    });
}

此函数发布到一个php脚本,该脚本返回一种新类型的表单,该表单返回带有id expressformcaptcha的新表单的html。这是php脚本。

<?php
echo <<<_END
<form id="expressformcaptcha">
    //other form elements
    <div id="captchadiv"><div id="captcha"></div></div>
</form>
_END;
?>

所有这些工作正常,验证码显示等。但是,以下警报永远不会被调用。为什么呢?

$("#expressformcaptcha").submit(function() {
    alert("FORM SUBMITTED");
});

它是否与使用jquery螺丝的验证码有关?提交表单而不是提醒时,页面只会刷新。

1 个答案:

答案 0 :(得分:6)

您需要使用livedelegate,因为expressformcaptcha会在以后注入DOM。

$("#expressformcaptcha").live('submit', function() {
    alert("FORM SUBMITTED");
});