2009-04-01 3 views
0

У меня есть код для javascript-календаря, и он отлично работает, поскольку он создает его при загрузке страницы. Однако мне было интересно, можно ли добавлять к нему события. Я нашел плагин (jQuery), который позволяет пользователю наводиться на td с помощью класса «событие», и будет отображаться событие. Так как этот календарь не будет использоваться мной, а кем-то, кто ничего не знает о разработке, мне было интересно, есть ли способ сделать php-файл или загрузить или что-то еще, чтобы она могла загрузить мероприятие. Я имею в виду, предположим, что ей нужно событие на 3-м, после чего она загружает файл php, читает его и сообщает javascript, чтобы добавить класс «событие» в эту дату, а jQuery сделает все остальное. Является ли это возможным? Я даже не могу понять, как это сделать, и я очень надеюсь, что объясню сам. Вот мой javascript кстати.javascript и php на лету календарь

function buildCal(){ 
    var d = new Date(); 
    var month = d.getMonth()+1; 
    var year = d.getFullYear(); 
    var monthName=['Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre']; 
    var daysInMonth=[31,0,31,30,31,30,31,31,30,31,30,31]; 

    var objectDay = new Date(year, month-1, 1); //fix date bug when current day is 31st 
    objectDay.od=objectDay.getDay()+1; //fix date bug when current day is 31st 

    var todaydate=new Date() 
    var scanfortoday=(year==todaydate.getFullYear() && month==todaydate.getMonth()+1)? todaydate.getDate() : 0 //DD added 

    daysInMonth[1]=(((objectDay.getFullYear()%100!=0)&&(objectDay.getFullYear()%4==0))||(objectDay.getFullYear()%400==0))?29:28; 

    var t='<div class="main"><table class="main" cols="7" cellpadding="0" border="0" cellspacing="0">'; 
    t+='<h3 class="monthCSS" align="center">'+monthName[month-1]+' - '+year+'</h3><tr align="center">'; 


    for(s=0;s<7;s++)t+='<td class="daysofweek">'+"DoLuMaMiJuViSa".substr(s*2,2)+'</td>'; 

    t+='</tr><tr align="center">'; 
    for(i=2;i<=42;i++){ 
     var x=((i-objectDay.od>=0)&&(i-objectDay.od<daysInMonth[month-1]))? i-objectDay.od+1 : '&nbsp;'; 
      if (x==scanfortoday) 
       x='<td class="today">'+x+'</td>' 
      t+='<td class="days">'+x+'</td>'; 
     if(((i)%7==0)&&(i<36))t+='</tr><tr align="center">'; 
    } 
    return t+='</tr></table></div>'; 
} 

Что-то еще, как вы можете видеть здесь, оно добавляет пробелы, пока не дойдет до фактической даты. Я пытался проверить, если (x не был числом), тогда добавьте td class = "padding", но для этого я пытался использовать x.match (/ [0-9] + /), но он не сделал " t, похоже, работает, и это также будет первый раз, когда я пытаюсь использовать регулярное выражение с javascript, кто-нибудь знает, почему это неправильно? или как на самом деле проверить его?


Редактировать

-то странное происходит с этим сценарием, и я не знаю почему, я попытался изменить из

t+='<td class="days">'+x+'</td>'; 

в

t+='<td class="days' + x +'">'+x+'</td>'; 

этой , поэтому я мог бы выбрать каждый td, но когда я это делаю, генерируется новый td, который не содержит

<td id="days&lt;td class=" today="">1</td> 

Я понятия не имею, почему это происходит, я просто знаю, что баловаться с кодом, потому что после этого я получаю «> распечатаны (из-за котировок неправильному матча, вызванного этим новым тд ... почему это происходит?

ответ

0

Календарные системы, которые я создал, используют полный массив php месяца. так что вы можете перебирать его и для каждой соответствующей пустой таблицы дневных таблиц есть пустой массив для дня.

например.

$calendar_dates = array(
       [week_1] = array(
        [sun] = Null 
        [mon] = NULL 
        [tue] = array(
          [events] = array(
            event_id => 'event name' 
            event_name => '' 
            event_time => '' 
          ) 
        [wed] 
        ... 
       ) 
       [week_1] => array() 
       ........... 
) 

Я строй дней массива, просто создать массив из указанной даты и текущей недели

тогда я ударил Databse, чтобы получить события в этом диапазоне

затем цикл через событие и attatch их в массив календаря.

работает как шарм.

Чтобы заставить его работать с javascript, просто попросите его указать определенный javascript в голове файла html, который контролирует открытие и закрытие календарных дней.

дать клиенту простую страницу входа для ввода/редактирования событий в веб-форме.

+0

вопрос, вы предлагаете добавить php, как вы показываете мне здесь, или что я делаю это полностью в php? – Tsundoku

+0

Глядя на ваш javascript, вам будет лучше делать все это в php. Функция JQuery для отображения дней - это все, что вам нужно иметь в javascript. –

0

Похоже, что вы хотите направить данные событий с сервера на свою веб-страницу, содержащую календарь. Хотя это возможно, это сложно и обычно не стоит усилий.Вам лучше было бы создать AJAX в свой календарь и опросить сервер для обновления событий каждые 5 или 10 минут или около того. Это приведет к некоторой задержке между загрузкой новых событий и их отображением в календаре, но будет намного легче развиваться.

Смежные вопросы