2012-11-08 96 views
1

我想用JavaScript來驗證所選日期不早於今天,但是當我選擇今天的日期時它顯示警告框。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

+0

告訴我們這個問題,看來你得到你想要的 – polin

+0

那麼,什麼是你的問題? –

+0

我使用日期選擇器的Ajax擴展器 – laspalmos

回答

2

我想,也許你事情太複雜了。我只想減去一天以毫秒爲單位,它應該工作:

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

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

+0

我使用ajax中的日期選擇器來選擇截止日期範圍 – laspalmos

+0

所以...你可以通過datepicker到'isPast'的日期作爲Date對象。 – elclanrs

+0

這是什麼意思864e5? – Talha

0

你這裏的邏輯似乎做你想要什麼 - 已設置的TD變量,你根據今天日期的最後一秒進行評估,並檢查所選日期是否在該日期之前或之前。今天的日期是「之前或等於」今天23:59:59 ...

此外,你已經用c#標記了這一點,儘管它是所有的javascript和ASP.net,據我所知。

+0

我使用asp.net代碼更新問題 – laspalmos

0

,如果你想要做的只選擇將來的日期,那麼你可以試試這個代碼也....這正與阿賈克斯日曆:

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)) 
     } 
    } 

希望這將幫助你..