我想验证选择的日期和时间是否超过当前日期和时间

时间:2011-11-18 02:57:56

标签: javascript jquery validation time format

我有两个只读文本框,一个文本框与jquery datepicker链接,另一个文本框与timepicker jquery链接。现在关于jquery datepicker的好处是我可以设置我的日期范围,以便用户无法在当前日期之前选择任何日期。但是Jquery时间戳不能是远程的,所以时间在当前时间之前。

因此,用户可以选择当前日期,但可以选择当前时间之前的时间。显然,这意味着所选择的时间已经超过了当前时间,我不想发生这种情况。因此,如果日期文本框和时间文本框超过当前日期和时间,则需要进行验证,然后显示一条消息,指出“您选择的日期和时间在当前日期和时间之前”,否则如果时间和日期一起过去当前日期和时间然后显示“”。

我该怎么做?以下是我最好的尝试,但我无法让它发挥作用。

<head>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
            <title>Create a Session</title>
                    <script type="text/javascript">

     function validation() {
                    var dateTextO = document.getElementById("datepicker");
                    var timeTextO = document.getElementById("timepicker");
                    var errDateTimeMsgO = document.getElementById("dateTimeAlert")

    var currentDate = new Date()
        var day = currentDate.getDate()
        var month = currentDate.getMonth() + 1
        var year = currentDate.getFullYear()

        var currentTime = new Date()
        var hours = currentTime.getHours()
        var minutes = currentTime.getMinutes()
        if (minutes < 10){
        minutes = "0" + minutes
        }
        if (hours < 10){
        hours = "0" + hours
        }

        if((dateTextO < currentDate) && (timeTextO < currentTime)){
            errDateTimeMsgO.innerHTML = "The Date and Time you have selected is before the Current Date and Time";
        } else {
            errDateTimeMsgO.innerHTML = "";
        }

            }
    </script>
    </head>

    <body>
    <form action="create_session.php" method="post" name="sessionform">
    <p><strong>4: Date:</strong> <input type="text" id="datepicker" readonly="readonly"></p>
                <p><strong>5: Time:</strong> <input type="text" id="timepicker" readonly="readonly"><span class="timepicker_button_trigger"><img src="Images/clock.gif" alt="Decrease" /></span></p>
                <div id="dateTimeAlert"></div>
    </form>
    </body>

1 个答案:

答案 0 :(得分:0)

实际上new Date()生成的日期是这样的

Wed Jul 20 2011 19:09:46 GMT+0530 (IST)

但你的日期选择时间可能是这样的

28-07-2011

它们有两种不同的格式。所以你不能comapare,所以你必须得到一种格式

var checkindatestr = document.getElementById("datepicker");
var dateParts = checkindatestr.split("-");

var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]);
var now = new Date();
var difference = now - checkindate;

你可以通过这种方式找到2天的差异。

我会找到一种方法告诉你如何比较2次.........:D

<强>更新

    var checkindatestr = document.getElementById("datepicker"); 
    var dateParts = checkindatestr.split("-");  
    var checkindate = new Date(dateParts[2], dateParts[1] - 1, dateParts[0]); 
    var nowdate = new Date(); 
    var differenceDate = parseInt(nowdate) - parseInt(checkindate); 

    var checkintimestr = document.getElementById("timepicker"); 
    var timeParts = checkindatestr.split(":"); 

    var currentTime = new Date(); 
    var hours = currentTime.getHours();
    var minutes = currentTime.getMinutes();

    if(( differenceDate >= 0) && (parseInt(hours) >= parseInt(timeParts[0]))  && (parseInt(minutes) > parseInt(timeParts[1]) )){
        errDateTimeMsgO.innerHTML = "The Date and Time you have selected is before the Current Date and Time";
    } else {
        errDateTimeMsgO.innerHTML = "";
    }

        }