CalendarExtender使用Javascript更改日期

时间:2009-05-05 14:12:05

标签: javascript ajax calendarextender

我的页面上有一个CalendarExtender控件,有时需要将日期更改为下一个星期日。我目前正在使用控件的OnClientDateSelectionChanged属性来调用一个函数,该函数将在日期之前添加几天直到它的星期日。

我遇到的问题是,如果我在日历中选择星期二,则文本框将显示下一个星期日,但日历中的所选日期仍为星期二。

如何更新CalendarExtender以使新的日期具有我在javascript中选择的日期? CalendarExtendar连接的文本框显示正确的日期...

2 个答案:

答案 0 :(得分:28)

如果满足以下2个条件,则更改 CalendarExtender TargetControlId 文本框的值会影响所选日期:< / p>

  1. 在文本框上触发 onchange 事件(通过手动更改文本或调用显式的javascript fireEvent()方法。
  2. 在文本框中输入的日期的格式与CalendarExtender控件使用的格式相同。
  3. 话虽如此,处理此问题的正确方法是调用CalendarExtender控件的set_selectedDate()函数。这一次调用不仅可以在日历上设置所选内容,还可以同时在“目标”文本框中设置。

    以下是示例代码:

    <cc1:CalendarExtender ID="CalendarExtender1" runat="server" 
            OnClientDateSelectionChanged="dateSelectionChanged" 
            TargetControlID="txtDate" PopupButtonID="imgCalendar">
    </cc1:CalendarExtender>
    
    <script type="text/javascript">
      function dateSelectionChanged(sender, args){
        selectedDate = sender.get_selectedDate();
        /* replace this next line with your JS code to get the Sunday date */
        sundayDate = getSundayDateUsingYourAlgorithm(selectedDate); 
        /* this sets the date on both the calendar and textbox */
        sender.set_SelectedDate(sundayDate); 
     }
    </script>
    

答案 1 :(得分:0)

<asp:TextBox ID="txtDate" Text='<%# Bind("Date", "{0:dd-MMM-yyyy}") %>'
                                                                                            runat="server" class="form-control input-sm m-bot15" BackColor="#ffccbb"></asp:TextBox>
                                                                                        <asp:CalendarExtender ID="CalExtender1" runat="server" Enabled="true" Format="dd-MMM-yyyy"
                                                                                            TargetControlID="txtDate">
                                                                                        </asp:CalendarExtender>