【问题标题】:how to Make a button disabled for 10 minutes even after refresh?即使刷新后如何使按钮禁用10分钟?
【发布时间】:2018-08-18 00:34:01
【问题描述】:

我想在单击按钮后禁用按钮 10 分钟,即使在刷新时它也会保持禁用状态。我怎样才能在 javascript 或 jquery 中制作它?我似乎无法为我的代码制作它。

  <script type="text/javascript" src="https://code.jquery.com/jquery-3.3.1.min.js">
       $(document).ready(function(){
   var limit = 10*60*1000; 
                   btn.attr("disabled", true);
                btn.css('cursor','not-allowed');
                message.text('wrong answer, please wait 10 minutes before trying again');
   var timer = setTimeout(disableMyButton, limit);

   function disableMyButton(){
              btn.removeAttr("disabled");
                    message.text('');
      localStorage.setItem("isMyButtonDisabled", "true");
   }

   if(localStorage.getItem("isMyButtonDisabled") == "true"){
               message.text('');
               btn.removeAttr("disabled");

     window.clearTimeout(timer);
   }
});
 </script>

【问题讨论】:

  • 以防篡改的方式?如果你在客户端做这件事就很难了。
  • 如果你想100%不被点击,你需要使用数据库。如果您只是不希望它出现并且您有后端验证,只需使用 HTML5 存储或 cookie。
  • 以非防篡改的方式,我会改变方法。按下按钮时将当前时间戳保存到本地存储,然后时不时检查一下当前时间戳减去保存的时间戳是否超过 10 分钟。在这种情况下,请重新启用该按钮。
  • @DawidZbiński 本身并不真正需要数据库。您指的是服务器端代码吗?
  • 不仅添加和删除disabled 属性,还添加和删除点击事件处理程序。否则,没有什么能阻止我检查按钮,自己删除 disabled 属性并在 10 分钟前单击按钮。

标签: javascript


【解决方案1】:

你的想法是对的。使用 localStorage 但将时间戳放在那里。然后在加载页面时,从 localStorage 中获取时间戳。如果 localStorage 时间戳和 now 之间的差异超过 10 分钟,则启用该按钮。如果没有,请适当设置超时。唯一的问题是保持 localStorage 干净。确保在 10 分钟结束时清除时间戳。

【讨论】:

  • 你能写代码澄清一下吗?...因为我试过你告诉我的,但不幸的是它不起作用
  • 类似这样的:
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-04
  • 2015-08-18
  • 2019-03-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多