如何验证日期范围?
我有以下代码验证日期范围,其中结束日期不允许小于开始日期。 但是,代码中似乎存在一些缺陷仍然允许错误的日期范围。
function ValidateDates() {
var data1 = $("#<%=txtDtSt.ClientID%>").val();
var data2 = $("#<%=txtDtEnd.ClientID%>").val();
var dateStart = ConvertForDate(data1);
var dateEnd = ConvertForDate(data2);
if (dateEnd < dateStart ) {
criarDivAlert("Alert", "Range Incorret.");
exibirAlerta(false);
$("#<%=txtDtEnd.ClientID %>").val('');
$("#<%=txtDtEnd.ClientID%>").focus();
}
}
function ConvertForDate(data) {
var dataArray = data.split('/');
var newDate = new Date(dataArray[2], dataArray[1], dataArray[0]);
return newDate;
}
请注意,我仍然创建了一个函数,用于将文本转换为日期以正确验证值。
测试:
开始日期:02/01/2018 截止日期:31/01/2018
您应该输入IF并警告日期范围不正确。
答案 0 :(得分:1)
您可以尝试以下解决方案来检查日期范围:
function validation(date1,date2) {
var v2 = document.getElementById('v2'),
date = new Date(v2.value),
dc1 = date.getTime(),
dc2 = new Date(date1).getTime(),
dc3 = new Date(date2).getTime();
if (dc1 > dc2 || dc1 < dc3) {
return true;
}else{
alert("date is not in valid range")
}
}
答案 1 :(得分:1)
您可以使用以下代码
function ValidateDates() {
var data1 = $("#<%=txtDtSt.ClientID%>").val();
var data2 = $("#<%=txtDtEnd.ClientID%>").val();
var dateStart = ConvertForDate(data1);
var dateEnd = ConvertForDate(data2);
if (dateEnd < dateStart ) {
alert("range is incorrect");
//criarDivAlert("Alert", "Range Incorret.");
//exibirAlerta(false);
$("#<%=txtDtEnd.ClientID%>").val('');
$("#<%=txtDtEnd.ClientID%>").focus();
}
}
function ConvertForDate(data) {
var dataArray = data.split('/');
var newDate = new Date(dataArray[2],parseInt(dataArray[1]) - 1, dataArray[0]);
return newDate;
}
在javascript月份从0开始,所以我做了-1
function ValidateDates() {
var data1 = $("#txtDtSt").val();
var data2 = $("#txtDtEnd").val();
var dateStart = ConvertForDate(data1);
var dateEnd = ConvertForDate(data2);
if (dateEnd < dateStart ) {
alert("range is incorrect");
//criarDivAlert("Alert", "Range Incorret.");
//exibirAlerta(false);
$("#txtDtEnd").val('');
$("#txtDtEnd").focus();
}
else alert("range is valid");
}
function ConvertForDate(data) {
var dataArray = data.split('/');
var newDate = new Date(dataArray[2],parseInt(dataArray[1]) - 1, dataArray[0]);
return newDate;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<input type="text" id="txtDtSt" />
<input type="text" id="txtDtEnd" />
<input type="button" value="Test" onclick="ValidateDates()"/>