Pergunta

Eu tenho o código para um calendário javascript e ele funciona perfeitamente, pois cria-lo quando a página é carregada. No entanto, eu queria saber se é possível adicionar eventos a ele. Eu encontrei um plugin (jQuery) que permite que o usuário passar o mouse sobre um td com classe "evento" e um evento será exibido. Então, já que este calendário não será usado por mim, mas por alguém que não sabe nada sobre o desenvolvimento Eu queria saber se existe uma maneira de fazer um arquivo php ou upload ou algo para que ela possa fazer o upload do evento. Quero dizer, vamos dizer que ela quer um evento no 3º então ela carrega um php arquivo lê e diz javascript para adicionar a classe "evento" que data e jQuery faz o resto. É possível? Eu não posso nem imaginar como fazer isso e eu realmente espero que eu me explicou. Aqui é o meu javascript btw.

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>';
}

Outra coisa, como você pode ver aqui, ele adiciona blankspaces até chegar a uma data real. Eu estava tentando fazê-lo verificar se (x não era um número), em seguida, adicionar um td class = "padding", no entanto, fazer isso eu estava tentando usar x.match (/ [0-9] + /), mas ele didn' t parecem trabalho e também seria a primeira vez que eu tento usar regex com javascript faria alguém sabe por que isso é errado? ou como verificar realmente para ele?


Editar

Algo estranho está acontecendo com esse script e eu não sei por que, eu tentei mudar a partir

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

para

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

isso, para que eu pudesse selecionar cada td, mas quando eu faço isso um novo td é gerado que contém

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

Eu não tenho idéia por que isso acontece, eu só sei que está mexendo com o código porque depois eu recebo um "> impresso (por causa das citações mis-match causada por este novo td ... porque isso está acontecendo?

Foi útil?

Solução

Os sistemas de calendário que eu criei usar uma matriz php cheia do mês. de modo que você pode iterar sobre ele e para cada célula da tabela em branco dia correspondente existe uma matriz em branco para o dia.

por exemplo.

$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()
              ...........
  )

I construir a matriz dias por apenas criar uma matriz a partir da data especificada e semana atual

então eu bati o databse para obter eventos nesse intervalo

então percorrer os eventos e attatch-los à matriz calendário.

funciona como charme.

Para obtê-lo para trabalhar com javascript apenas tê-lo ecoar alguns javascript específica na cabeça do arquivo html que controlar a abertura e fechamento dos dias de calendário.

dar-lhe cliente uma página de login simples de entrada / editar eventos em um formulário Web.

Outras dicas

Parece que você está querendo empurrar dados de eventos do servidor para sua página da Web que contém o calendário. Embora isso seja possível, é difícil e geralmente não vale o esforço. Você seria melhor fora de construção de algum AJAX em seu calendário e interrogar o servidor de eventos atualiza a cada 5 ou 10 minutos mais ou menos. Isto irá introduzir algum atraso entre quando novos eventos são enviados e quando eles exibem no calendário, mas será muito mais fácil para se desenvolver.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top