我正在尝试使用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>
答案 0 :(得分:2)
我想也许你的事情太复杂了。我只想用毫秒减去一天,它应该可以工作:
function isPast( date ) {
return date.getTime() < (new Date().getTime() - 864e5);
}
答案 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))
}
}
希望这会对你有帮助..