周末+基于小时的禁用按钮

时间:2018-02-16 10:38:32

标签: javascript

我只是放弃这样做并需要帮助,因为我的大脑终于卡住了......

这是情况

我希望此按钮 [提交表单] 根据时间禁用(不会消失),假设我希望此按钮正常工作每天从下午5:00开始 - 上午12:00 但之后,此按钮将被禁用,用户无法点击按钮(按钮只是冻结),最好还有消息说提交表单仅在商务时间左右可用

这个按钮也只能每天工作,周末除外,这样人们就无法在周末(周六和周日)提交任何表格

时间基于我目前的国家时间...嗯这很难解释,我的意思是..比如UTC + 8太平洋时间?因为提交此表单的用户基于我当地的时间

如果有人可以帮助或愿意尝试......这对我来说很重要

更新: 这是我发现几乎我想要的封闭脚本,除非他们在周末没有禁用按钮

<input class="submit" type="submit" id="checktime" value="Check"/>

<script type="text/javascript" defer="defer">
<!-- 
var enableDisable = function(){
    var UTC_hours = new Date().getUTCHours() +1;
    if (UTC_hours > 17 && UTC_hours < 24){
        document.getElementById('checktime').disabled = false;
    }
    else
    {
        document.getElementById('checktime').disabled = true;
    }
};
setInterval(enableDisable, 1000*60);
enableDisable();
// -->
</script>

相信我从成员stackoverflow得到的代码:来自2014年的Marko

2 个答案:

答案 0 :(得分:1)

无论您做什么,请记住您还必须在服务器端检查提交时间的有效性。在浏览器中禁用按钮不会停止&#39; hackerish&#39;用户提交表格/任何内容。

否则,您可以做的最好的事情是定期检查并启用/禁用具有该粒度的按钮(例如每5秒左右)。

&#13;
&#13;
setInterval(function(){
   var now=new Date();
   document.getElementById("culprit").disabled=now.getSeconds()<30;
   document.getElementById("time").innerHTML=now.getSeconds();
},5000);
&#13;
<button id="culprit">Clicky</button>
<div id="time"></div>
&#13;
&#13;
&#13;

这个小型演示会检查它是第一个还是后半个部分(已经足够等待,即使它显示时间),对于您的真实代码,您需要更复杂的测试建议@ StefanOctavian&#39; answer

var now = new Date()
document.getElementById("culprit").disabled=now.getDay() >= 5 || now.getHours() < 17;

答案 1 :(得分:0)

如果你想只使用javascript实现这一点,你可以像这样使用Date对象:当页面加载时,获取当前日期和时间的信息,并在必要时禁用按钮:

var now = new Date()
if(now.getDay() >= 5 // Saturday & Sunday
   || (now.getHours() >=  5 && now.getHours() < 12))
     button.disabled = true

然后,要在时钟停止12 AM时再次启用它,您可以获得Date.now()now.setHours(12)之间的时间间隔,然后使用setTimeout重新激活按钮。