使用带有到期日期的jQuery

杰伊

我可以帮我完成我为网站编写的这段代码吗?我正在使用jquery,此代码的作用是在客户可以再次重新申请之前先检查应用程序的更新日期(失效日期),因此,基本上,他们只能在当前应用程序失效日期的4周内重新申请。

例如,如果某个人的申请在2016年8月31日到期,这意味着他们只能在4个星期之内从2016年8月3日至2016年8月31日重新申请。申请期限为3年。

我提供了代码及其工作原理,但是我不知道这是否是正确的条件,并且如果到期日期仍未到,它所做的只是隐藏Apply按钮。

$(document).ready(function(){

    var current = new Date();
    var expiry = new Date($("#mcs_nextrecertdate").val());

    if(current.getTime() > expiry.getTime()){
        $("#NextButton").show();
    }
    else {
        $("#NextButton").hide();
    }

编辑:我正在测试根据这些日期从答案中收到的代码,我可以首先在2016年8月27日重新申请,第二次是不能再申请2019年7月20日的日期

狮子座

考虑到您的问题和对您问题的解释,我想指出我的一些看法

1.日期验证

var expiry = new Date($("#mcs_nextrecertdate").val());

不管#mcs_nextrecertdate什么,我都会假设您已经确保此“输入”元素的值格式正确。否则,您将收到一个JS脚本错误,整个过程都会中断

2.逻辑错误

根据您的解释,用户只能在当前应用程序的到期日期后的4周内重新进行认证。我假设这#NextButton是一个触发新应用程序的提交按钮。基于此,这个表达是错误的...

if(current.getTime() > expiry.getTime()){...}

因为你告诉你的应用程序,允许用户申请认证的当前应用程序已过期,NOT 4周内到期后,换句话说,用户只能重新申请他们的应用程序结束后... ...不前。

3.服务器验证

这只是一个假设。我还将假设此“客户端逻辑”仅是为了为您的应用提供良好的用户体验,并且您正在运行适当的服务器端验证,否则像我这样的高级用户可以轻松绕过客户端验证,欺骗/破解这些“约束”,甚至使您的应用程序数据处于不一致状态。

正确的逻辑

为了确保用户可以在当前有效日期之前的4周内重新申请您需要执行以下操作...

var now = new Date();
var expiry = new Date($("#mcs_nextrecertdate").val());//assuming this has a valid date
var startValidAppDate = new Date($("#mcs_nextrecertdate").val());

//set valid application dates
startValidAppDate.setTime(expiry.getTime() - (7 * 4 * 24 * 60 * 60 * 1000));//4 weeks to milliseconds

if(now < expiry && now > startValidAppDate){
     //ok to apply
     $("#NextButton").show();
}

同样,请始终确保您在服务器上进行了严格的验证。这是一个工作中的狙击手...

$(function(){
        $('#txtExpiryDateParent').datetimepicker({
                format: "YYYY-MM-DD"
            });
  
      $("a").click(function(){
          var now = new Date();
          var expiry = new Date($("#txtExpiryDate").val());
          var startValidAppDate = new Date($("#txtExpiryDate").val());

          //set valid application dates
          startValidAppDate.setTime(expiry.getTime() - (7 * 4 * 24 * 60 * 60 * 1000));//4 weeks to milliseconds

          if(now < expiry && now > startValidAppDate){
              $(".info.bg-success").show();
              $(".info.bg-error").hide();
          }
        else{
              $(".info.bg-success").hide();
              $(".info.bg-error").show();
          }
        });
  });
form{
  background-color:#eee;
  max-width:500px;
  padding:30px;
  margin:30px;  
  }

.info{
  padding:20px;
  border-radius:3px;
  text-align:center;
  margin-bottom:20px;
  display:none;
  }
.bg-success{
  background-color:#5cb85c !important;
  }
.bg-error{
  background-color:#d9534f !important;
  }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/moment.js/2.14.1/moment.min.js"></script>
<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" integrity="sha384-1q8mTJOASx8j1Au+a5WDVnPi2lkFfwwEAa8hDDdjZlpLegxhjVME1fgjWPGmkzs7" crossorigin="anonymous">

    <script src="//maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" integrity="sha384-0mSbJDEHialfmuBBQP6A4Qrprq5OVfW37PRR3j5ELqxss1yVqOtnepnHVP9aJ7xS" crossorigin="anonymous"></script>
    <script src="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/js/bootstrap-datetimepicker.min.js"></script>
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/bootstrap-datetimepicker/4.17.37/css/bootstrap-datetimepicker.min.css" />


<form class="center-block">
   <div class="info bg-success">You're good to re-certify</div>
   <div class="info bg-error">You can't certify right now</div>
   <div class="form-group">
            <label for="txtExpiryDate">Expiry Date</label>
            <div class='input-group date' id='txtExpiryDateParent'>
                <input id="txtExpiryDate" type='text' name="ExpiryDate" class="form-control" 
                       placeholder="Expiry date..."  />
                <span class="input-group-addon">
                    <span class="glyphicon glyphicon-calendar"></span>
                </span>
            </div>
        </div>
  <a class="btn btn-default" href="javascript:void(0)">Validate</a>
</form>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

创建带有到期日期的Android通知

来自分类Dev

带有dateTimePiker的C#帐户到期日期

来自分类Dev

Angular的到期日期

来自分类Dev

Microsoft Graph:无法创建带有到期日期的计划器任务

来自分类Dev

具有到期日期的共享首选项

来自分类Dev

存储具有到期日期的会话数据

来自分类Dev

为将来的帐户设置到期日期有问题

来自分类Dev

创建具有到期日期的 Cookie

来自分类Dev

合约到期日期与使用开采的区块号

来自分类Dev

php date()和到期日期()

来自分类Dev

TinyMce4到期日期

来自分类Dev

未设置Cookie的到期日期

来自分类Dev

检查Active Directory到期日期

来自分类Dev

到期日期和页面刷新

来自分类Dev

Cookie 到期日期等于 -1

来自分类Dev

訂閱到期日期

来自分类Dev

解析 REST 令牌到期日期

来自分类Dev

如何使用CodeIgniter数据库中促销的开始日期和到期日期?

来自分类Dev

远期到期日

来自分类Dev

jQuery或Javascript-验证当前日期是否大于到期日

来自分类Dev

查询Active Directory以设置所有到期日期的帐户

来自分类Dev

如何在C#中创建具有到期日期的用户密码

来自分类Dev

Android-SharedPreference是否具有默认到期日期?

来自分类Dev

帐户的到期日期或帐户对所有AD用户都永不过期

来自分类Dev

查找并搜索,然后复制并粘贴具有最近到期日期的数据

来自分类Dev

具有到期日期的日志文件批处理脚本

来自分类Dev

购买后,Final Cut Pro是否有到期日期?

来自分类Dev

openssl未创建具有预期到期日期的证书

来自分类Dev

EXIF数据中是否有到期日期之类的东西?