Отложить обратную передачу на 3 секунды? - PullRequest
1 голос
/ 31 июля 2009

У меня есть пользовательский контроль с несколькими выпадающими списками и кнопкой, я хочу, чтобы пользователь нажимал кнопку (который response.redirects зависит от выбора в DDL).

Теперь вместо того, чтобы перенаправлять сразу, я хочу, чтобы на 3 секунды отображался маленький значок загрузки, а затем перенаправлял ... Кто-нибудь делал что-нибудь подобное?

Ответы [ 5 ]

3 голосов
/ 31 июля 2009

Искусственная задержка, в которой ничего не нужно, отчасти хромая. Вместо этого вы можете при отправке формы показывать свой пульсатор. Я использую следующее в форме загрузки документов, где публикуются большие медиа-файлы.

<script type="text/javascript" id="PreJavaScript">
    function NUsubmit(){
        document.getElementById("uploadFormInputs").style.display = 'none';
        document.getElementById("progressBar").style.display = 'block';
        return true;
    };
    function init() { document.getElementById("UploadFormObject").onsubmit = NUsubmit; };               

    window.onload = init;
</script>

Если я правильно помню, в некоторых версиях IE анимированный GIF не воспроизводился, но работал нормально в IE6 + и FireFox.

Таким образом, если обратная передача быстрая, они никогда не видят пульсатор, но если они видят это некоторое время, и это дает им ощущение, что что-то происходит.

1 голос
/ 31 июля 2009

Вы можете выполнить задержки с помощью функции setTimeout () в javascript.

setTimeout(function() { alert('After 5 seconds.'); }, 5000);
0 голосов
/ 03 августа 2009

Я получил это с помощью

System.Threading.Thread.Sleep(4000);

В обратной передаче

0 голосов
/ 31 июля 2009

Похоже, вы должны реализовать эту страницу, используя AJAX. Вы можете разместить индикатор прогресса на своей странице, чтобы предупредить пользователя о продолжительном процессе.

0 голосов
/ 31 июля 2009

Возможно, вам понадобится переопределить пару вещей в вашем Javascript и использовать "setTimeout", чтобы отложить загрузку.

<script type="text/javascript" >
    var __handleSubmit = theForm.submit;
    theForm.onsubmit = function() {
        alert('loading'); //Show your message here
        window.setTimeout(function() {
            __handleSubmit();
        }, 3000);
    }
</script>

Возможно, вы захотите поиграть немного больше ... это может не сработать для всех случаев, так как я никогда не делал этого.

Если задержка просто из-за "эстетики", чтобы заставить ее казаться, что она работает, то я бы порекомендовал против этого - кажется, что программисты - единственные люди, которые думают, что загрузка баров - это здорово:)

...