Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для iMP viSiOn

Пользователь


Сообщения: 84
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Есть опыт по созданию данной фишки под 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
%>
Вроде это все, пришлось помучаться немного, но чтение литературы - вещь поразительно полезная

Последний раз редактировалось mar, 28-05-2006 в 13:07.


Отправлено: 01:53, 24-03-2005 | #9