Frage

Ich habe den Code für einen Javascript-Kalender und es funktioniert perfekt, da er es schafft, wenn die Seite geladen wird. Allerdings habe ich mich gefragt, ob es möglich ist, Ereignisse, um es hinzuzufügen. Ich fand ein Plugin (jQuery), die den Benutzer ermöglicht, eine td mit Klasse „Ereignisse“ zu schweben und ein Ereignis wird angezeigt. So, da dieser Kalender wird nicht von mir verwendet werden, sondern von jemand anderem, der nichts weiß über die Entwicklung Ich habe mich gefragt, ob es eine Möglichkeit ist, eine PHP-Datei oder laden oder etwas zu machen, damit sie die Veranstaltung hochladen. Ich meine, sagen sie, sie ein Ereignis am 3. will dann lädt sie eine Datei php liest und erzählt Javascript, um das Klasse „Ereignis“ dieses Datum und jQuery erledigt den Rest hinzuzufügen. Ist es möglich? Ich kann nicht einmal herausfinden, wie es zu tun, und ich hoffe wirklich, dass ich mich erläuterte. Hier ist mein 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>';
}

Etwas anderes, wie Sie hier sehen können, fügt blankspaces, bis es zu einem tatsächlichen Zeitpunkt erhält. Ich habe versucht, es zu machen, prüfen Sie, ob (x keine Zahl war), dann eine td class = „padding“ add jedoch, dies zu tun Ich habe versucht, x.match zu verwenden (/ [0-9] + /), aber es didn‘ t scheinen zu funktionieren und es wäre auch das erste Mal, dass ich versuche Regex zu verwenden, um mit Javascript sollte jemand wissen, warum das falsch? oder wie man tatsächlich für sie überprüfen?


Bearbeiten

Etwas seltsam mit diesem Skript passiert, und ich weiß nicht, warum, habe ich versucht, von

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

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

dies, so könnte ich jeden td wählen, aber wenn ich diese eine neue td tun erzeugt, welches enthält

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

Ich habe keine Ahnung, warum dies geschieht, ich weiß nur, es mit dem Code durcheinander, weil danach ich eine „> gedruckt (wegen der Zitate mis-match durch diese neue td verursacht bekommen ... warum ist das passiert?

War es hilfreich?

Lösung

Die Kalender-Systeme Ich habe einen vollständigen Verwendung von PHP-Array des Monats erstellt. so dass Sie über ihn und für jede entsprechende leeren Tag Tabellenzelle laufen können ein leeres Array für den Tag da ist.

z.

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

Ich baue die Tage Array von nur ein Array aus dem angegebenen Datum und die aktuelle Woche zu schaffen

dann traf ich die databse Ereignisse in diesem Bereich zu erhalten

dann zyklisch durch die Ereignisse und sie in den Kalender Array attatch.

funktioniert wie Charme.

Um es mit Javascript arbeiten nur haben es einige spezifische Javascript in dem Kopf der HTML-Datei Echo, das das Öffnen und Schließen der Kalendertage Kontrolle zu bringen.

geben Sie Client eine einfache Login-Seite zur Eingabe / bearbeiten Ereignisse in ein Webformular.

Andere Tipps

Es klingt wie Sie wollen, Ereignisdaten vom Server auf Ihre Webseite mit dem Kalender schieben. Während dies möglich ist, ist es schwierig und in der Regel nicht die Mühe wert. Sie würden besser dran bauen einige AJAX in Ihren Kalender und Polling werden die Server für die Event-Updates alle 5 oder 10 Minuten oder so. Dies wird eine gewisse Verzögerung zwischen einführen, wenn neue Ereignisse werden hochgeladen und wenn sie auf dem Kalender angezeigt werden, wird aber viel leichter zu entwickeln sein.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top