2012-05-15 2 views
1

Я использую Аякс CalendarExtender и JavaScript, чтобы ограничить, что пользователь не выберет прошедшую дату, но здесь я столкнулся вопрос:Ajax календарь расширителя не выбрать предыдущую дату

  • Если пользователь выбирает прошлая дата, то она работает нормально
  • Если пользователь выбирает будущую дату, то и он работает нормально

Но если пользователь выбирает текущую дату, то и он получает предупреждение, которое не является требовать д.

Мое требование состоит в том, чтобы пользователь мог выбрать текущую дату плюс будущую дату, но ограничивать ввод любой предыдущей даты. Пожалуйста, помогите мне решить эту проблему, ниже вы можете найти код: -

<div id="formload" > 
    <!-- ============================== Fieldset 1 ============================== --> 
    <fieldset> 
     <legend>Enter Date</legend> 
     <table> 
     <tr> 
     <td><label for="input-one" class="float"><strong>Date</strong></label> 
     </td><br /> 
     <td><asp:TextBox ID="txtDate" runat="server" CssClass="inp-text" Width="300px"></asp:TextBox> </td> 
     <td><asp:Image runat="server" ID="btnDate2" AlternateText="cal2" ImageUrl="~/App_Themes/Images/icon_calendar.jpg" /> 
      <ajaxtoolkit:calendarextender runat="server" ID="calExtender2" Format="dddd, MMMM dd, yyyy" PopupButtonID="btnDate2" TargetControlID="txtDate" OnClientDateSelectionChanged="CheckDateEalier" /> </td> 
     </tr></table> 

    </fieldset> 
    <!-- ============================== Fieldset 1 end ============================== --> 

Javascript

<script type="text/javascript"> 
     function CheckDateEalier(sender, args) 
      { 
       if (sender._selectedDate < new Date()) 
       { 
        alert("Day earlier than today cannot be selected."); 
        sender._selectedDate = new Date(); 
        sender._textbox.set_Value(sender._selectedDate.format(sender._format)) 
       } 
      } 

</script> 
+0

функция CheckDateEalier (отправитель, арг) { вар Todate = новая дата(); toDate.setMinutes (0); toDate.setSeconds (0); toDate.setHours (0); toDate.setMilliseconds (0); if (sender._selectedDate Dharmendra

ответ

1

это потому, что дата такое же, но время отличается установленный час мин сек и милли секунд до 0, то он будет работать.

<script type="text/javascript"> 
      function CheckDateEalier(sender, args) { 
       var toDate = new Date(); 


      var selectedDate = sender._selectedDate; 

      toDate.setMinutes(0); 
      toDate.setSeconds(0); 
      toDate.setHours(0); 
      toDate.setMilliseconds(0); 

      selectedDate.setMinutes(0); 
      selectedDate.setSeconds(0); 
      selectedDate.setHours(0); 
      selectedDate.setMilliseconds(0); 

      //alert(sender._selectedDate < toDate); 
      //var difference = sender._selectedDate - toDate; 

      if (selectedDate > toDate) { 

        alert("Ticket issue date must be greater than current date."); 
        sender._selectedDate = toDate; //set the date back to the current date 
        sender._textbox.set_Value(sender._selectedDate.format(sender._format)); 

      }    
     } 
Смежные вопросы