2010-01-08 29 views
0

我有一些按鈕點擊運行的Ajax。有時需要幾秒鐘的時間才能返回,所以我想讓用戶知道瀏覽器正在做什麼。爲什麼在使用JQuery嘗試更改IE中某個按鈕上的文本時存在時間延遲?

所以,我有這樣的:

$('#SubmitButton').attr("value", "Working..."); 
    $('#SubmitButton').attr("disabled", true); 

    //Synchronous Ajax call goes here 

    $('#SubmitButton').attr("value", "Submit"); 
    $('#SubmitButton').attr("disabled", false); 

正如你所看到的,它改變按鈕上的文本,並禁用它。當Ajax調用回來(它是同步的,請記住),該按鈕變回。

在Firefox中,這很好用。

在IE中,它很奇怪。它不會按順序運行代碼。它不會更改按鈕的文本,並直接啓動Ajax調用。瀏覽器會阻止提交活動並說「提交」。

右鍵阿賈克斯回來後,按鈕快速閃爍「工作......」然後回到提交「。

所以,出於某種原因,IE瀏覽器後不改變按鈕的文字,直到 Ajax調用,即使它的代碼是之前 Ajax調用

它的作用是這樣的:再次

//Synchronous Ajax call goes here 

    $('#SubmitButton').attr("value", "Working..."); 
    $('#SubmitButton').attr("disabled", true); 

    $('#SubmitButton').attr("value", "Submit"); 
    $('#SubmitButton').attr("disabled", false); 

,這個完美的作品在Firefox。但在IE中,有某種...滯後?

+0

爲什麼不使用回調? $ .post(url,function(){// callback})? – Skawful 2010-01-08 23:30:38

+0

只是爲了偏執,你的AJAX調用是什麼樣子?你使用jQuery.ajax的「async」選項爲true,還是使用$ .get? – Parrots 2010-01-08 23:34:15

回答

0

在進行同步調用之前,瀏覽器可能沒有時間更新它。試試這個:

$('#SubmitButton').attr("value", "Working..."); 
$('#SubmitButton').attr("disabled", true); 

window.setTimeout(function(){ 
    // Synchronous Ajax call goes here 

    $('#SubmitButton').attr("value", "Submit"); 
    $('#SubmitButton').attr("disabled", false); 
}, 100); 
+0

試過了。毫不拖延。 – Deane 2010-01-22 22:16:26

相關問題