2015-01-07 3 views
1

У меня есть небольшие C# код позади, чтобы обновить страницу WebForm (form.aspx) через 15 секунд, как показано ниже:Auto обновить страницу с обратным отсчетом временем

lblMessage.Text = "<b><h2>Thank you!</h2></b></br>We will be right with you.<br><br><br>(This page will be refreshed automatically after 15 seconds)"; 
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success!", "setInterval(function(){location.href='/form.aspx';},15000);", true); 

Сейчас страница будет обновляться после 15 секунд. Как сделать так, чтобы таймер отсчитывал каждую секунду? то есть, 15 => 14 => 13 => ... 1 затем обновить так будет лучше для пользователей, они будут знать, что происходит со страницей ...

+0

Создать вход или элемент на странице, которая показывает обратный отсчет таймера на каждом интервале. – Mouser

+1

Я думаю, что это было бы лучше подходит и легче понять, помещая его в ваш aspx, а не код за – Kritner

ответ

1
"<b><h2>Thank you!</h2></b></br>We will be right with you.<br><br><br>(This page will be refreshed automatically after <span id='counter'>15</span> seconds)" 

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "Success!", "setTimeout(function(){location.href='/form.aspx';},15000); counter = 15; setInterval(function(){counter--; document.getElementById('counter').innerHTML = counter;},1000);", true); 

Если это сделать.

Если добавлено span с idcounter вокруг номера сообщения для обновления.

Затем я добавил counter = 15; для инициализации значения по умолчанию 15. И еще один setInterval для блока сценария, запускающего каждую секунду. С каждым проходом он вычитает один из counter и обновляет span с новым значением счетчика. Теперь пользователи должны видеть, что страница подсчитывается. Я также изменил первый setInterval на setTimout, так как это технический тайм-аут, а не интервал, который должен произойти каждые 15 секунд.

+0

Абсолютно гений! Я собирался добавить UpdatePanel, Timer, ScriptManager и все виды элементов управления ... на страницу aspx, но это работает очень хорошо и просто. –

+0

Могу ли я попросить вас еще одну услугу, прямо сейчас я показываю часы (час: минута + дата) на странице aspx с помощью панели обновления и таймера, она возвращает серверную почту каждые 30 секунд, что не очень хорошо, как я могу сделайте это с помощью javascript, что-то простое, как ваш ответ, можете ли вы добавить его в свой ответ. –

+0

@RonaldinhoLearnCoding, пожалуйста, запустите новый вопрос или пообщайтесь для этого и предоставьте мне код. – Mouser

3

В javascript я бы пошел с чем-то вроде этого.

<div id='countdown'></div. 

var countDown = 15; 

function countdown() { 
    setInterval(function() { 
     if (countDown == 0) { 
      return; 
     } 
     countDown--; 
     document.getElementById('countdown').innerHTML = countDown; 
     return countDown; 
    }, 1000); 
} 

countdown(); 

Фидл: http://jsfiddle.net/chzzcosy/

+0

спасибо за этот очень чистый код, а также за рабочую демонстрацию, это отлично работает! –

Смежные вопросы