2011-08-18 90 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