Есть опыт по созданию данной фишки под ASP. Вообщем суть, встала проблема, при выборе месяца и года ,автоматом в третьем ниспадающем меню выдавалось кол-во дней в выбраном месяце, конкретного года.
Для этого был написан JS файл, с функциями по перехват и отправке данных на сервер, файл соотв. где были формы и файл по обработке отосланых данных. Т.е. выбирают месяц и год, данные о выбранном сразу идут на файл с обработкой событий и третья форма после обработки получает кол-во дней. Все без перезагрезки страницы.
1. Скрипт файл, который можно имопртировать в файл с меню.
Код:

// Общий URL до файла (файл должен быть на сервере, где расположена сама страница) с обработкой событий
var url = "functions/aspvalidate.asp?month=";
var url2 = "&year=";
// Присваеваем результат запроса объекту
function handleHttpResponse()
{
if (http.readyState == 4)
{
// Присвоение результата после обработки конкретному объекту, в виде вложеного HTML кода
document.getElementById("DateDaySelectSpan").innerHTML = http.responseText;
}
}
// При изменении значения полей отправляем запрос снова
function updateSelection()
{
// Считываем значения двух ниспадающих меню
var SelectedMonth = document.getElementById("DateMonthSelect").value;
var SelectedYear = document.getElementById("DateYearSelect").value;
// Отсылаем переменные ффайлу с функциями обработки событий
http.open("GET", url + escape(SelectedMonth) + url2 + escape(SelectedYear), true);
http.onreadystatechange = handleHttpResponse;
http.send(null);
}
// Получаем заголовок HTTP объекта
function getHTTPObject()
{
var xmlhttp;
// Обработка события IE подобным браузером
/*@cc_on
@if (@_jscript_version >= 5)
try
{
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}
catch (e)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (E)
{
xmlhttp = false;
}
}
@else
xmlhttp = false;
@end @*/
if (!xmlhttp && typeof XMLHttpRequest != '1')
{
try
{
xmlhttp = new XMLHttpRequest();
}
catch (e)
{
xmlhttp = false;
}
}
return xmlhttp;
}
var http = getHTTPObject();
2. Едем дальше, код файла для обработки выбраного месяца и года.
Код:

<%
'// Обработка переменных адресной строки
if Session("CurrentUserLogin") <> 0 Then
'// Сбор идентификаторов из адресной строки
monthID = idStatus("month")
yearID = idStatus("year")
'// Функция замены вывода данных на экран [Response.Write]
Function echo(StringContent)
Response.Write(Stringcontent)
End Function
'// Функция обработки переменной адресной строки на предмет целочисленности
Function idStatus(txtQueryString)
if isNumeric(Request.QueryString(txtQueryString)) then
if Request.QueryString(txtQueryString) > 0 then
idStatus = Request.QueryString(txtQueryString)
else
idStatus = 0
end if
else
idStatus = 0
end if
End Function
'// Вычисление количества дней в текущем месяце
Function DaysInMonth(SelectedDate)
DaysInMonth2 = SelectedDate
CurrentDate = Day(DaysInMonth2)
BeginMonth = DateAdd("d",-(CurrentDate-1),DaysInMonth2)
EndMonth = (DateAdd("m",1, BeginMonth)-1)
DaysInMonth = Day(EndMonth)
End Function
'// Вывод количества дней в ниспадающее меню, в зависимости от выбранного месяца и года
TotalDays = DaysInMonth("1" & "/" & monthID & "/" & yearID)
echo "<select name='DateDaySelect' id='DateDaySelect'>"
'// Окончательный вывод данных в строку, которая уйдет с запросом обрано в документ с меню
for i = 1 to TotalDays
echo "<option value=" & i & selectedOption & ">" & i & "</option>"
next
echo "</select>"
end if
%>
Вроде это все, пришлось помучаться немного, но чтение литературы - вещь поразительно полезная
