Drop Down Архив

Тема в разделе "ExpressionEngine", создана пользователем [/root.], 24 сен 2007.

Статус темы:
Закрыта.
  1. [/root.]

    [/root.] Он самый

    Регистр.:
    20 май 2006
    Сообщения:
    368
    Симпатии:
    59
    Как таг сделать? Чтобы в зависимости от выбранного из списка месяца или года менялся календарь в реал-тайме? С меня чай.
     

    Вложения:

    • Calendar.gif
      Calendar.gif
      Размер файла:
      3,4 КБ
      Просмотров:
      59
  2. difour

    difour Прохожие

    onchange эффект к селекту, и потом аяксом грузить страничку календаря.
    к примеру у себя я описывал мелкий JS код для загрузки страницы, но тебе ещ надо добавить функцию, которая бы брала год и месяц и создавала урл для запроса. http://difour.org/blog/more/ajax_simple_loading/
     
  3. [/root.]

    [/root.] Он самый

    Регистр.:
    20 май 2006
    Сообщения:
    368
    Симпатии:
    59
    В общем нашел похожее нечто, осталось прикрутить к EE. Неспеша да сообща? *_*
    .js
    Код:
    function buildCalendar(elementId,lang,month,year,url){
    	var strCalendar;
    	month=month-1;
    
    	if (1==lang)
    	{
    	strCalendar='<table class="calend" id="calendar"><thead><tr><th>Mn</th><th>Tu</th>	<th>Wd</th><th>Th</th><th>Fr</th><th>St</th><th>Su</th></tr>';
    	};
    
    	var strMonths = "January,February,March,April,May,June,July,August,September,October,November,December";
    	var arrMonths = strMonths.split(",");
    	var strTemp = "1 " + arrMonths[month] + " " + year;
    
    	var DateTemp = new Date(strTemp);
    	var FirstDay = DateTemp.getDay();
    	var Today = new Date();
    	var IsToday = Today.getDate() + "/" + ( Today.getMonth()+1) + "/" + Today.getFullYear();
    
    	var iStart;
    	if(FirstDay==0){
    		FirstDay=6;
    	}
    	else{
    	FirstDay = FirstDay - 1;
    	}
    
    	for(var RowCount = 0; RowCount < 42; RowCount = RowCount + 7)
    	{
    	strCalendar += "<tr>";
    
    	for(var i = RowCount; i < (RowCount + 7);i++)
    	{	
    
    	strTemp = ((i-FirstDay) + 1) + "/" + (month + 1) + "/" + year;
    	if(i >= FirstDay && i < (31 + FirstDay))
    	{		
    	if(isDate(strTemp))
    	{
    	if(strTemp == IsToday)
    	{
    	strCalendar += "<td align=\"center\" class=\"CalButtonToday\">";
    	}
    	else
    	{
    	strCalendar += "<td align=\"center\">";
    	}
    	strCalendar += "<a href=\""+url+"?ChosenDay="+ ((i-FirstDay) + 1)+"&ChosenMonth="+(month+1)+"&ChosenYear="+(year)+"\">" + ((i-FirstDay) + 1)+'</a>';
    	strCalendar += "</td>";
    	}
    	else
    	{
    	strCalendar += "<td>&nbsp;</td>";
    	}
    	}
    	else
    	{
    	strCalendar += "<td>&nbsp;</td>";
    	}
    	}//End For
    	strCalendar += "</tr>";
    	};
    	strCalendar=strCalendar+'</tr></tbody></table>';
    	WriteInnerHTML(elementId, strCalendar);		
    	}
    
    function isDate(DateToCheck){
    	var arrDate = DateToCheck.split("/");
    	var myDAY = arrDate[0];
    	var myMONTH = arrDate[1];
    	var myYEAR = arrDate[2];
    	var strDate;
    	strDate = myMONTH + "/" + myDAY + "/" + myYEAR;
    	var testDate=new Date(strDate);
    	if(testDate.getMonth()+1==myMONTH){
    	return true;
    	} 
    	else{
    	return false;
    	}
    	}//end function
    
    Код вызова календаря в шаблоне
    Код:
    <div id='calendar'></div>
    <script type='text/javascript'>
    //<!--[CDATA[
    	var aMonth=09;
    	var aYear=2007;
    	showCal();
    	function showCal() {
    	buildCalendar('calendar',1,aMonth,aYear,'/search/');
    	};
    //]]-->
    </script>
    
    Менюшги архива
    Код:
    <select class="month" name="ChosenMonth" onchange="aMonth=this.options[this.selectedIndex].value;showCal();">
    <option value="1">январь</option>
    <option value="2">февраль</option>
    <option value="3">март</option>
    <option value="4">апрель</option>
    <option value="5">май</option>
    <option value="6">июнь</option>
    <option value="7">июль</option>
    <option value="8">август</option>
    <option value="9" selected="selected">сентября</option>
    <option value="10">октябрь</option>
    <option value="11">ноябрь</option>
    <option value="12">декабрь</option>
    </select>
    
    <select name="ChosenYear" onchange="aYear=this.options[this.selectedIndex].value;showCal();">
    <option value="2007" selected="selected">2007</option>
    <option value="2006">2006</option>
    <option value="2005">2005</option>
    <option value="2004">2004</option>
    <option value="2003">2003</option>
    <option value="2002">2002</option>
    <option value="2001">2001</option>
    <option value="2000">2000</option>
    <option value="1999">1999</option>
    <option value="1998">1998</option>
    <option value="1997">1997</option>
    <option value="1996">1996</option>
    <option value="1995">1995</option>
    <option value="1994">1994</option>
    </select>
    
     
Статус темы:
Закрыта.