2016-03-22 21 views
0

Çevrimiçi Q/A sisteminde çalışıyorum, her adayın geri sayımını 3 dakika gibi göstermek zorundayım, süresi dolan kullanıcı Result.aspx sayfasına yönlendirilecek. Aşağıdakilere bakıyorum 1.Her aday için sayaç ayarlaması. 2.on sayfa yenileme sayacı varsayılan değere ayarlanmış. i kodunuJQuery kullanarak Her Aday için Geri Sayım nasıl ayarlanır?

<div id="timer"> 

</div> 
<script type="text/javascript"> 
     function countdown(minutes) { 
      var seconds = 60; 
      var mins = minutes; 

      if (getCookie("minutes") && getCookie("seconds")) { 
       var seconds = getCookie("seconds"); 
       var mins = getCookie("minutes"); 
      } 

      function tick() { 

       var counter = document.getElementById("timer"); 
       setCookie("minutes", mins, 10) 
       setCookie("seconds", seconds, 10) 
       var current_minutes = mins - 1 
       seconds--; 
       counter.innerHTML = 
       current_minutes.toString() + ":" + (seconds < 10 ? "0" : "") + String(seconds); 
       //save the time in cookie 
       //minutesSpan.innerHTML = current_minutes.toString(); 
       //secondsSpan.innerHTML = (seconds < 10 ? "0" : "") + String(seconds); 
       if (seconds > 0) { 
        setTimeout(tick, 1000); 
       } 
       else { 
        if (mins > 1) { 
         // countdown(mins-1); never reach “00″ issue solved:Contributed by Victor Streithorst  
         setTimeout(function() { countdown(mins - 1); }, 1000); 
        } 
       } 
      } 
      tick(); 
     } 
     function setCookie(cname, cvalue, exdays) { 
      var d = new Date(); 
      d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); 
      var expires = "expires=" + d.toGMTString(); 
      document.cookie = cname + "=" + cvalue + "; " + expires; 
     } 
     function getCookie(cname) { 
      var name = cname + "="; 
      var ca = document.cookie.split(';'); 
      for (var i = 0; i < ca.length; i++) { 
       var c = ca[i]; 
       while (c.charAt(0) == ' ') c = c.substring(1); 
       if (c.indexOf(name) == 0) { 
        return c.substring(name.length, c.length); 
       } 
      } 
      return ""; 
     } 
     countdown(3); 
    </script> 

i farklı her biri işlemek zorunda birden fazla kullanıcı bu testi yapıyor, çünkü ben şu var kodu aşağıdakilere sahip Her aday için testi atamak atamak

private void NewCandidate() 

     { 

      var ClistCount = (from cl in ef.Candidate_Table where cl.Name == btnname.Text && cl.Status_Id==2 select cl).FirstOrDefault(); 
      if (ClistCount != null) 
      {    
       string cnic = ClistCount.Cnic;    
       Session["token"] = cnic; 
       Response.Redirect("MainTestForm.aspx?id=" + cnic); 
      } 
      else 
      { 
       MsgLitteral.ShowNotification("No Candidate Is Here", true); 
       btnbrowse.Visible = false; 
       btnname.Visible = false; 
      } 
     } 

cevap

0

iki şey vardır Eğer 1 çalışma şeyler yapmak için yapmanız gereken olan) mükemmel çalışıyor oluşturun yeniden bağımlılık

    ) zamanlayıcı yöntemini 2 geri sayım çözün Yeniden yükleme/yenileme işleminden hemen önce yeniden yükleme için
  • , önceden tanımlanmış geri sayımdan geçen geçerli zamanı saklayacak bir işlevi tetikleyin.

$(window).bind('beforeunload', function(){ 
 
    //below function stores current elapsed time in cookie/local storage 
 
    callFunction(); 
 
    return true; 
 
});
için eg

  • 3 dk geri sayım ayarlanırsa ve 2 dakika zaman kullanıcı yenilendiğinde veya sonraki soruya hamle 40 saniye sonra çerezlere 40 sn 2 dakika saklamak veya html5 yerel depolama alanı

  • Her belgede hazır olayda çerez değerini kontrol edin
    bugünkü değer ardından (ilk kez durum için) önceden belirlenmiş değer ile bu değeri ve set geri sayım başka alırsak

A simple countdown timer for reference