Domanda

Ho il codice per un calendario javascript e funziona perfettamente come si crea quando la pagina viene caricata. Tuttavia mi chiedevo se è possibile aggiungere eventi ad esso. Ho trovato un plugin (jQuery), che permette all'utente di sorvolare un td con classe di "evento" e verrà visualizzato un evento. Quindi, dal momento che questo calendario non verrà utilizzato da me, ma da qualcun altro che non sa nulla di sviluppare Mi chiedevo se esiste un modo per rendere un file php o caricare o qualcosa in modo che possa caricare l'evento. Insomma, diciamo che vuole un evento al 3 ° poi si carica un file php lo legge e dice javascript per aggiungere l ' "evento" di classe che la data e jQuery fa il resto. È possibile? Non riesco nemmeno a capire come farlo e spero davvero che io stesso ho spiegato. Ecco il mio 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>';
}

Un'altra cosa, come si può vedere qui, si aggiunge blankspaces fino a quando non arriva a una data effettiva. Stavo cercando di farlo controllare se (x non era un numero) quindi aggiungere un td class = "padding", tuttavia per fare questo ho cercato di usare x.match (/ [0-9] + /), ma didn' t sembrano funzionare e sarebbe anche la prima volta che provo a usare espressioni regolari con javascript sarebbe qualcuno sa perché è sbagliato? o il modo di controllare la realtà per questo?


Modifica

Qualcosa di strano sta accadendo con questo script e io non so perché, ho provato a cambiare da

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

a

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

questo, così ho potuto selezionare ogni td, ma quando faccio questo un nuovo td viene generato, che contiene

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

Non ho idea del perché questo accade, so solo che è scherzi con il codice, perché poi ho un "> stampata (a causa delle citazioni mis-match causata da questa nuova td ... perché sta succedendo questo?

È stato utile?

Soluzione

I sistemi di calendario che ho creato l'uso di un array PHP completo del mese. in modo da poter scorrere su di esso e per ogni cella di una tabella vuota giorno corrispondente v'è una matrice in bianco per il giorno.

per es.

$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 costruire la matrice giorni da solo la creazione di una matrice dalla data specificata e settimana corrente

poi mi ha colpito il databse per ottenere gli eventi in tale intervallo

poi scorrere gli eventi e li attatch alla matrice del calendario.

funziona come fascino.

Per farlo funzionare con javascript appena lo hanno eco alcuni javascript specifica nella testa del file HTML che controllano l'apertura e la chiusura dei giorni di calendario.

darà cliente una semplice pagina di login per inserire / modificare gli eventi in un modulo web.

Altri suggerimenti

Sembra che hai intenzione di spingere i dati degli eventi dal server alla tua pagina web contenente il calendario. Anche se questo è possibile, è difficile e, in generale, non vale la pena. Si sarebbe meglio costruire un po 'di AJAX nel calendario e il polling del server per l'evento aggiorna ogni 5 o 10 minuti o giù di lì. Questo introduce un certo ritardo tra il momento in nuovi eventi vengono caricati e quando si visualizzano sul calendario, ma sarà molto più facile da sviluppare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top