2009-05-05 3 views
12

У меня есть элемент управления CalendarExtender на моей странице и иногда приходится менять дату на следующее воскресенье. В настоящее время я использую свойство OnClientDateSelectionChanged элемента управления для вызова функции, которая добавит несколько дней до даты до ее воскресенья.CalendarExtender Изменить дату с помощью Javascript

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

Как обновить CalendarExtender, чтобы иметь новую дату, у которой есть один, который я выбрал в javascript? Текстовое поле CalendarExtendar подключен к показывает правильную дату ...

+0

есть ли какая-либо причина, почему вы решили использовать этот календарь управление вместо JQuery Datepicker плагин? – TStamper

+1

Я решил использовать этот элемент управления календарем, потому что я развиваюсь в ASP.Net, и мы должны ограничивать то, что мы используем. У нас уже есть инструментарий управления Ajax в нашем проекте, поэтому я должен придерживаться этого. – Miles

ответ

28

Изменения значения текстового поля, которое является TargetControlId для CalendarExtender влияет на выбранной даты, если выполняются следующие условия 2:

  1. OnChange событие вызывается на текстовом поле (либо путем изменения текста вручную или с помощью вызова метода явного яваскрипта fireEvent().
  2. формат даты, введенной в текстовое поле, совпадает с тем же форматом, который используется элементом управления CalendarExtender.

Как говорится, правильный способ справиться с этим состоит в том, чтобы вызвать функцию управления CalendarExtender set_selectedDate(). Этот один вызов не только устанавливает выбранные в календаре, но также и в текстовое поле Targeted одновременно.

Вот пример код:

<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

Хорошая работа. Надеюсь, ты получишь эту щедрость. +1 – ichiban

+0

хорошо, я попробовал это и не получил его на работу. Я попытаюсь поместить код в комментарии ... Вот что у меня есть: function onDateSelected (отправитель, args) { var selectedDate = sender.get_selectedDate(); while (selectedDate.getDay()! = 0) \t selectedDate.setDate (selectedDate.getDate() + 1); // alert (selectedDate); sender.setSelectedDate (selectedDate); предупреждение («готово»); } } Я вижу предупреждение, которое показывает мне дату и правильную дату, но я никогда не вижу законченную коробку, потому что перед этим я получаю ошибку javascript. – Miles

+0

Вот ошибка, которую я получаю: Объект не поддерживает это свойство или метод – Miles