我可以帮我完成我为网站编写的这段代码吗?我正在使用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日的日期
考虑到您的问题和对您问题的解释,我想指出我的一些看法
var expiry = new Date($("#mcs_nextrecertdate").val());
不管#mcs_nextrecertdate
是什么,我都会假设您已经确保此“输入”元素的值格式正确。否则,您将收到一个JS脚本错误,整个过程都会中断
根据您的解释,用户只能在当前应用程序的到期日期后的4周内重新进行认证。我假设这#NextButton
是一个触发新应用程序的提交按钮。基于此,这个表达是错误的...
if(current.getTime() > expiry.getTime()){...}
因为你告诉你的应用程序,允许用户申请认证后的当前应用程序已过期,NOT 4周内到期后,换句话说,用户只能重新申请他们的应用程序结束后... ...不前。
这只是一个假设。我还将假设此“客户端逻辑”仅是为了为您的应用提供良好的用户体验,并且您正在运行适当的服务器端验证,否则像我这样的高级用户可以轻松绕过客户端验证,欺骗/破解这些“约束”,甚至使您的应用程序数据处于不一致状态。
为了确保用户可以在当前有效日期之前的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] 删除。
我来说两句