Javascript检查日期

时间:2012-11-08 04:55:58

标签: javascript asp.net

我正在尝试使用JavaScript来验证所选日期不早于今天,但是当我选择今天的日期时,它会显示警告框。

JavaScript的:

function checkDueDate(sender, args) {
    var td = new Date(); 
    td.setMinutes(59);
    td.setSeconds(59);
    td.setHours(23);
    //to move back one day
    td.setDate(td.getDate() - 1);

    if (sender._selectedDate < td) {
        alert("You can't select day from the past! " + td + "");
        sender._selectedDate = new Date();
        // set the date back to the current date
        sender._textbox.set_Value(sender._selectedDate.format(sender._format))
    }

ASP.NET:

        <asp:TextBox ID="txtDueDate" runat="server"></asp:TextBox>
        <asp:CalendarExtender ID="txtDueDate_CalendarExtender" runat="server" 
            TargetControlID="txtDueDate" OnClientDateSelectionChanged="checkDueDate">
        </asp:CalendarExtender>

Image

3 个答案:

答案 0 :(得分:2)

我想也许你的事情太复杂了。我只想用毫秒减去一天,它应该可以工作:

function isPast( date ) {
  return date.getTime() < (new Date().getTime() - 864e5); 
}

演示: http://jsbin.com/igeyov/1/edit

答案 1 :(得分:0)

你在这里的逻辑似乎正是你想要的 - 你已经将你评估的td变量设置为今天可能的第二个日期,并且你正在检查所选日期是否等于或等于该日期。今天的日期是“等于”今天23:59:59 ......

此外,您已使用c#标记了此内容,但据我所知,它只是javascript和ASP.net。

答案 2 :(得分:0)

如果您只想选择未来的日期,那么您也可以尝试使用此代码....这适用于ajax日历:

 function checkDate(sender, args) {
        if (sender._selectedDate < new Date()) {
            alert("You can select only future day!");
            sender._selectedDate = new Date();
            // set the date back to the current date
            sender._textbox.set_Value(sender._selectedDate.format(sender._format))
        }
    }

以下是HTML代码:

 <asp:TextBox ID="txtDOB" Width="180px" MaxLength="50" runat="server"></asp:TextBox>
                            <ajaxctrl:calendarextender onclientdateselectionchanged="checkDate" id="cale_txtDOB"
                                runat="server" targetcontrolid="txtDOB" format="MM/dd/yyyy" cssclass="cal_Theme1">
                            </ajaxctrl:calendarextender>

此代码仅在您选择过去的日期时有效,它会显示弹出“您无法选择过去日期”的任何内容。 更新的代码: 如果你不想包括今天的日期,这里是代码工作,你只想要未来的日期:

function checkDate(sender, args) {
        if (sender._selectedDate <= new Date()) {
            alert("You can select only future day!");
            sender._selectedDate = new Date();
            // set the date back to the current date
            //sender._textbox.set_Value(sender._selectedDate.format(sender._format))
        }
    }

希望这会对你有帮助..