如何验证日期范围?

时间:2018-01-03 11:31:12

标签: jquery

如何验证日期范围?

我有以下代码验证日期范围,其中结束日期不允许小于开始日期。 但是,代码中似乎存在一些缺陷仍然允许错误的日期范围。

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并警告日期范围不正确。

2 个答案:

答案 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()"/>