Почему при попытке изменить текст на кнопке в IE с помощью JQuery возникает задержка? - PullRequest
0 голосов
/ 09 января 2010

У меня есть 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. Браузер блокируется с активным «Отправить» с сообщением «Отправить».

Сразу после возвращения Ajax кнопка быстро мигает «Работает ...», а затем возвращается в «Отправить».

По какой-то причине IE не изменяет текст кнопки до после вызова Ajax, даже если код для него до вызова Ajax. 1018 *

Это действует так:

    //Synchronous Ajax call goes here

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

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

Опять же, это отлично работает в Firefox. Но в IE есть какая-то ... лага?

1 Ответ

0 голосов
/ 09 января 2010

Браузер может не успеть обновить его до выполнения синхронного вызова. Попробуйте это:

$('#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);
...