2016-03-22 67 views
0

我正在在線Q/A系統上工作,我必須爲每個候選人顯示倒計時3分鐘,屆滿後用戶將重定向到Result.aspx頁面。 我面臨以下 1.如何設置每個候選人的計數器。 2.在頁面刷新計數器設置爲默認值。 我有以下代碼如何使用jquery爲每個候選人設置倒計時

<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> 

由於多個用戶會做這些測試,所以我有處理每一個不同的,我有以下的代碼分配給每個候選分配測試

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; 
      } 
     } 

回答

0

有兩件事情你需要做的事情,以使事情工作 1)創建完美的工作倒數計時器方法 2)解決重載依賴關係

  • 用於在重新加載/刷新之前重新裝入事物,觸發一個函數,該函數將存儲從預定義的向下計數過去的當前時間。

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

  • 爲例如,如果3分鐘的倒計時被設置,並在2分鐘用戶刷新或移動到 下一個問題40秒然後2分鐘40秒存儲在cookie中或 HTML5本地存儲

  • 在每個文件準備好事件檢查cookie值
    如果現值然後 藉此值並設置倒計時 別的 與預定義的值(在第一次的情況下)

A simple countdown timer for reference