0

ボタンのクリックで実行される Ajax があります。戻るのに数秒かかる場合があるため、ブラウザが何かを実行しているという視覚的な手がかりが必要でした。

だから、私はこれを持っています:

    $('#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 呼び出しが開始されます。Submit がアクティブな状態でブラウザがブロックされ、「Submit」と表示されます。

Ajax が戻ってきた直後に、ボタンがすばやく点滅して [Working...] と表示され、[Submit] に戻ります。

そのため、何らかの理由で、ボタンのコードがAjax 呼び出しの前にあるにもかかわらず、IE は Ajax 呼び出しのまでボタンのテキストを変更しません。

次のように動作しています。

    //Synchronous Ajax call goes here

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

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

繰り返しますが、これは Firefox で完全に機能します。しかしIEでは、ある種の...ラグがありますか?

4

1 に答える 1

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);
于 2010-01-08T23:32:06.613 に答える