簡體   English   中英

如何在asp.net中使用Javascript永久禁用按鈕?

[英]How to Permanently Disable a button using Javascript in asp.net?

我在asp.net中使用javascript創建了一個倒數計時器。 完成時間后, Button1被禁用,但是當我重新加載頁面時,倒計時器被重置並且Button1被啟用。

我想在計時器等於零時永久禁用Button1 我的代碼是:

 var tim; var min = 01; var sec = 00; var f = new Date(); function f1() { f2(); } function f2() { if (parseInt(sec) > 0) { sec = parseInt(sec) - 1; document.getElementById("showtime").innerHTML = ""+min+" Minutes ,"+sec+" Seconds"; tim = setTimeout("f2()", 1000); } else { if (parseInt(sec) == 0) { min = parseInt(min) - 1; if (parseInt(min) == -1) { clearTimeout(tim); $("#Button1").prop('disabled', true); } else { sec = 60; document.getElementById("showtime").innerHTML = "" + min + " Minutes ," + sec + " Seconds"; tim = setTimeout("f2()", 1000); } } } } 
 <body onload="f1()"> <div><h3>Time will be finished after:</h3> </div> <div id="showtime"></div> <div> <asp:Button ID="Button1" runat="server" Text="Submit"/></div>` </body> 

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.js"></script>

<script>
function f2() {
  if (parseInt(sec) > 0) {
    sec = parseInt(sec) - 1;
    document.getElementById("showtime").innerHTML = ""+min+" Minutes ,"+sec+" Seconds";
    tim = setTimeout("f2()", 1000);
  }
  else {
    if (parseInt(sec) == 0) {
     min = parseInt(min) - 1;
       if (parseInt(min) == -1) {
        clearTimeout(tim);
        $("#Button1").prop('disabled', 'true');
        storeValue('disabled', 'true');
       }
       else {
       sec = 60;
       document.getElementById("showtime").innerHTML = "" + min + " Minutes ," + sec + " Seconds";
       tim = setTimeout("f2()", 1000);
       }
     }
   }
 }
 function storeValue(key, value) {
  if (localStorage) {
    localStorage.setItem(key, value);
  } else {
    $.cookies.set(key, value);
  }
 }

function getStoredValue(key) {
  if (localStorage) {
    return localStorage.getItem(key);
  } else {
    return $.cookies.get(key);
  }
}
function f1() {
 f2();
 var model =getStoredValue('disabled');
 if(model == 'true')
 {
   $("#Button1").prop('disabled', 'true');
 }
}
var tim;
var min = 01;
var sec = 00;
var f = new Date();
</script>

使用此代碼並使thrid方localstorage在瀏覽器中使用

當您重新加載頁面時,頁面狀態將完全重置,就好像新訪問者找到了您的頁面一樣,因此您需要能夠在訪問之間存儲該狀態。

一種解決方案是使用您可以在計時器到期時設置的cookie ,並在頁面加載時檢查cookie的存在。 如果它在那里,立即禁用按鈕沒有計時器。

一個更復雜的解決方案是調查在你的服務器上保存會話狀態,但我不知道你在服務器端有什么進展,所以我不能給你很多東西去那里。

您可以在計時器關閉時設置cookie。 並在每個頁面加載檢查cookie並在需要時禁用該按鈕。 沒有其他辦法。

僅供參考:您可以使用相同的cookie來禁用服務器端的按鈕。

使用Javascript

 document.getElementById("myBtn").disabled = true;

或者如果你需要它與jquery-點擊

$('.rbutton').on('click',function() {
$(this).prop("disabled",true);
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM