我有这个功能,它包括验证用户输入的日期。到目前为止,我只检查日期格式是否正确(dd / mm / yyyy)。
但是,我还想检查输入的日期是今天的日期,而不是之前或将来的日期。
我想到了var currentdate = new Date();
之类的东西然后比较两者,但我还没有修改日期,也不想搞砸它。有什么想法我应该写它吗?。
function validate(){
var date = $("#dateentry").val();
if (/^(0[1-9]|1\d|2\d|3[01])\/(0[1-9]|1[0-2])\/(19|20)\d{2}$/.test(date)){
$("#msg").html("The date format is correct");
}else{
$("#msg").html("The date format must be dd/mm/yyyy");
}
}
答案 0 :(得分:2)
我认为您唯一的选择是与今天的比较。
var todaysDate = new Date();
if(new Date(date).setHours(0,0,0,0) >= todaysDate.setHours(0,0,0,0));
{
$("#msg").html("Date should not be prior or greater that current date");
}
答案 1 :(得分:2)
您应该始终手动解析日期字符串,特别是如果它们不是ECMA-262(ISO 8601扩展格式)中包含的格式。
以d / m / y格式解析和验证日期的功能如下。然后,您可以通过创建今天的日期来检查是否是今天,将时间设置为00:00:00并进行比较:
function parseDMY(s) {
var b = (''||s).match(/\d+/g);
var d = new Date(b[2]||0, (b[1]||0)-1, b[0]);
return d && d.getMonth() == b[1]-1? d : new Date(NaN);
}
var today = new Date();
today.setHours(0,0,0,0);
console.log('Today is: ' + today);
// Returns true on 15 June 2016
var s = '15/06/2016';
console.log('Is today ' + s + '? ' + (parseDMY(s).getTime() == today.getTime()))
这也消除了测试单独输入值的需要。
答案 2 :(得分:1)
如果您使用input type="date"
,则可以禁用之前的日期,从而避免任何验证
希望此代码段有用
HTML
<input type="date" name="dateTime" id="dateTime">
JS
var dateTime = document.getElementById("dateTime").value;
var today = new Date().toISOString().split('T')[0];
document.getElementById("dateTime").setAttribute('min', today);