我有一个JavaScript日历的代码和它完美的作品,因为它创建它的页面加载时。但是我在想,如果有可能的事件添加到它。我发现了一个插件(jQuery的),使用户能够在TD悬停在与类“事件”和将被显示的事件。所以,因为这日历将不是我,而是由别人谁知道任何有关开发我想知道如果有一种方法可以使PHP文件或上传或东西,所以她可以上传的情况下使用。我的意思是,让我们说她要上3号的事件,然后,她上传文件PHP读取它,并告诉JavaScript来添加类“事件”在该日期和jQuery没有休息。可能吗?我甚至无法弄清楚如何做到这一点,我真的希望我解释自己。这里是我的JavaScript顺便说一句。

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

别的东西,你可以在这里看到,它增加了blankspaces直到它到达一个实际日期。我试图让检查(X是不是一个数字),然后添加一个TD类=“填充”,然而要做到这一点,我试图用x.match(/ [0-9] + /),但它没”不像是会工作,它也将是我第一次尝试使用正则表达式使用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>

我不知道为什么会这样,我只知道它与代码搞乱,因为后来我碰到一个“>印刷(因为由这种新的TD行情不匹配......为什么会这样?

有帮助吗?

解决方案

在日历系统我已经创建使用一个月的完整PHP数组。这样就可以在其上并为每对应空白天表格单元迭代有一天空白阵列。

e.g。

$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文件的头。

给你的客户一个简单的登录页面输入/编辑事件在网络表单。

其他提示

这听起来像你想从服务器推送事件数据包含日历网页。虽然这是可能的,这是困难的,通常不值得努力。你会过得更好一些构建AJAX到您的日历和轮询事件的服务器每5分钟或10分钟左右更新。这将引进新的时,事件被上传时,他们显示在日历之间有一些延迟,但会更容易发展。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top