javascript和php即时日历
我有javascript日历的代码,它在页面加载时创建日历,工作非常完美。然而,我想知道是否有可能添加事件到它。我发现了一个插件jQuery,它允许用户将鼠标悬停在带有类事件的td上,并显示一个事件。因此,由于这个日历将不会由我使用,而是由对开发一无所知的其他人使用,我想知道是否有一种方法可以制作一个php文件或上传什么的,以便她可以上传活动。我的意思是,假设她想在3号上传一个事件,然后她上传一个文件,php读取该文件,并告诉javascript添加该日期的类事件,其余的由jQuery完成。可能吗?我甚至不知道怎么做,我真的希望我能解释清楚。这里是我的javascript顺便说一句javascript和php即时日历,php,javascript,calendar,on-the-fly,Php,Javascript,Calendar,On The Fly,我有javascript日历的代码,它在页面加载时创建日历,工作非常完美。然而,我想知道是否有可能添加事件到它。我发现了一个插件jQuery,它允许用户将鼠标悬停在带有类事件的td上,并显示一个事件。因此,由于这个日历将不会由我使用,而是由对开发一无所知的其他人使用,我想知道是否有一种方法可以制作一个php文件或上传什么的,以便她可以上传活动。我的意思是,假设她想在3号上传一个事件,然后她上传一个文件,php读取该文件,并告诉javascript添加该日期的类事件,其余的由jQuery完成。可能
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 : ' ';
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>';
}
另外,正如您在这里看到的,它会在到达实际日期之前添加空格。我试图让它检查ifx不是一个数字,然后添加一个td class=padding,但是为了做到这一点,我尝试使用x.match/[0-9]+/但它似乎不起作用,这也是我第一次尝试将正则表达式与javascript结合使用,有人知道为什么会这样吗?或者如何实际检查它
编辑
这个脚本发生了一些奇怪的事情,我不知道为什么,我试图从
t+='<td class="days">'+x+'</td>';
到
这样,我可以选择每个td,但当我这样做时,会生成一个新的td,其中包含
<td id="days<td class=" today="">1</td>
我不知道为什么会发生这种情况,我只知道这会弄乱代码,因为后来我得到了一个>打印,因为这个新td导致了引号不匹配…为什么会发生这种情况?我创建的日历系统使用了一个完整的php月数组。因此,您可以对其进行迭代,对于每个对应的空白日表单元格,都有一个该日的空白数组 e、 g 我通过从指定的日期和当前周创建一个数组来构建days数组 然后我点击数据库获取该范围内的事件 然后循环浏览事件并将其附加到日历阵列 工作起来很有魅力 要让它与javascript一起工作,只需让它在html文件的头部响应一些特定的javascript,这些javascript控制日历日的开始和结束
为客户端提供一个简单的登录页面,以在网络表单中输入/编辑事件。听起来您想将事件数据从服务器推送到包含日历的网页。虽然这是可能的,但这很困难,通常不值得付出努力。您最好在日历中构建一些AJAX,并每隔5或10分钟左右轮询服务器以获取事件更新。这将在上传新事件和在日历上显示事件之间引入一些延迟,但会更容易开发。问题,您建议我添加php,就像您在这里向我展示的那样,或者我完全用php来完成?看看您的javascript,您最好用php来完成。在javascript中,显示天数的JQuery函数是您所需要的全部。
<td id="days<td class=" today="">1</td>
$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()
...........
)