2011-08-18 59 views
0

我正在开发一个简单的验证码系统,如果不可读,就使用jquery刷新图像。jQuery回调事件

$('a#reload').click(function(){ 

    $(this).removeClass('reload').addClass('reloading'); 

    var ts = Math.round((new Date()).getTime()/1000); 

    $('div#captcha-image img').attr('src', 'captcha/captcha.php?t=' + ts); 

    $('input#captcha').focus(); 

}); 

此代码除了将重新加载按钮重置为其初始状态外,其他所有操作都会执行。

我希望在完成上述所有操作之后再使用此函数,如ajax中的回调函数。

$(this).removeClass('reloading').addClass('reload'); 

该函数将重载按钮重置为其初始正常状态,因此如何在所有事物都通过后调用它。

谢谢。

+1

你是否问只有在新的验证码图片完全加载后才会触发添加“重新加载”类? –

+0

是的!而已。 – medk

+0

,我在captcha.php中放置了一个sleep(1),需要一些时间来处理,以便可以注意到按钮的更改状态。 – medk

回答

1

您需要添加:

$('div#captcha-image img').load(function(){ 
    $(a#reload).removeClass('reloading').addClass('reload'); 
}); 

所以,如果你的形象是一个有效的图像和被加载然后.load()将等待,直到它完成调用回调和更改链接。

1
$('a#reload').click(function(){ 

    $(this).removeClass('reload'); 

    var ts = Math.round((new Date()).getTime()/1000); 

    $('div#captcha-image img').attr('src', 'captcha/captcha.php?t=' + ts); 

    $('input#captcha').focus(); 

    $(this).removeClass('reloading').addClass('reload'); 
}); 

这看起来很平凡,所以我不确定我完全理解了这个问题。

+0

感谢您的回答,但这不起作用,因为该功能将被立即调用,以便在图像验证码在服务器中处理并在浏览器中返回之前,按钮回到其正常状态,并且您不会注意到任何更改在按钮状态中,因为它立即变回。 – medk