第一次ajax调用后jQuery函数不会重新绑定

时间:2011-07-22 17:12:14

标签: jquery

我的网站上有一个注册模式,可以加载验证码图像(http://codeigniter.com/forums/viewthread/108964/)。如果用户提交错误的验证码,验证码图像将刷新一个新图像,以便他们可以再次尝试,但代码不会运行第二,第三,第四等时间。图像只刷新一次。

                    if(typeof(res.error) != "undefined") {
                        $('#loading_register_success').hide();
                        switch(res.error) {
                            case "already_registered":
                            default:
                                $('#register_submit').show();
                                $('.register_tab').hide();
                                $('.register_tab:first').show();
                                $.validationEngine.buildPrompt('#email','<?=l("already_registered_question") . " " . l("email")?>','error');
                            break;

                            case "captcha_mismatch":
                                if(res.refresh_captcha) {
                                    refreshCaptcha();
                                }

                                $('#register_submit').show();
                                $('#securimage_error').html(res.message).show();
                            break;
                        }
                    } else {
                        if(res.refresh_captcha) {
                            refreshCaptcha();
                            $('#register_submit').show();
                        } 
                            else
                                $.jGrowl(res.message, { life: 3000});

                        $("#loading_register_success").hide();
                    }

刷新验证码功能

var refreshCaptcha = function() {
    var captcha = $('#captcha_holder').find('img');
    $('#loader').show();
    captcha.hide();
    $('#loader').hide();
    captcha.attr('src', '');
    captcha.attr('src', '/<?=$this->session->userdata("cur_lang")?>/register/secur_image');
    captcha.show();
}

启动所有这一切的触发器是当有人点击表单中的提交按钮时。有一个.live('click')事件绑定到此按钮...

为什么这不会运行的任何想法?

修改:: 因此看起来在FF中出现了新图像,但它会快速将其与新图像交换出来。但是当提交错误的验证码时,它什么都不做。不想交换图像。我迷路了。

1 个答案:

答案 0 :(得分:0)

我能够找出问题所在。我需要在随机图像生成器中加入“缓存存储区”。

工作代码:

var refreshCaptcha = function() {
    $('#captcha_holder').html('');

    $('#loader').show("fast", function(){
        $('#captcha_holder').delay(3000).find('img:first').remove();
        $('#captcha_holder').append('<img id="securimage_img" />');
        $('#captcha_holder').find('img:first').attr('src', '/<?=$this->session->userdata("cur_lang")?>/register/secur_image/' + Math.random() + '');
        $(this).hide();
    });

    return false;
}