我的网站上有一个注册模式,可以加载验证码图像(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中出现了新图像,但它会快速将其与新图像交换出来。但是当提交错误的验证码时,它什么都不做。不想交换图像。我迷路了。
答案 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;
}