<div class="calendar">
<div class="outer clearfix" id="calendarcontainer">//日历控件容器
</div>
</div>
涉及到的js文件:
1.Calendar.js 地址 :http://bj.tourex.net.cn/js/Calendar.js
2.jquery.js(这个要打开看看,里面的内容并不是jQuery) 地址:http://bj.tourex.net.cn/sys/js/jquery.js
3.jquery.validate.check.js 地址:http://bj.tourex.net.cn/sys/js/jquery.validate.check.js
4.line.js(日历月显示调用函数就在这个里面)地址:http://bj.tourex.net.cn/js/line.js
5.myfocus-2.0.4.min.js 地址:http://bj.tourex.net.cn/js/plugin/myfocus-2.0.4.min.js
核心的调用代码如下(该函数可能还需要和另外的js配合使用。):
CreateCalendar(c, y, m, a, b,d, f,fu)
参数说明: c:容器,
y:年,
m:月,
a:出发时间XML,
b:参团人群,
d:是否天天发团,
f:是否显示双日历,
fu:回调
使用例子:
1. CalendarPage('calendarcontainer',2014,4)//显示4、5月份日历
2.CalendarPage('calendarcontainer',2014,2)//显示2、3月份日历
function CreateCalendar(c, y, m, a, b,d, f,fu) {//c:容器,y:年,m:月,a:出发时间XML,b:参团人群,d:是否天天发团,f:是否显示双日历,fu:回调LC[c] = [c, y, m, a, b, d,f, fu] var today = new Date(Date.parse(webconfig('date').replace(/-/g, '/'))) today = new Date(today.getFullYear(),today.getMonth(),today.getDate()) if (y == 0 || m == 0) { y = today.getFullYear()m = today.getMonth() + 1}var dmin=Date.parse(a.first().attr('d').replace(/-/g, '/')),dmax =Date.parse(a.last().attr('d').replace(/-/g, '/')) var i1 = 0, i2 = 0, i3 = 0, d1 = new Date(dmin), d2 today = today.DateToParse() if (Date.parse(d1.getFullYear() + '/' + (d1.getMonth() + 1) + '/1') >Date.parse(new Date(y,m-1,1))) {y = d1.getFullYear()m = d1.getMonth() + 1 }$('#' + c).html('')//农历//var ca=new Calendar()tmp=''for(var i=0i<=fi++){d1=new Date(y,m-1+i)y=d1.getFullYear()m=d1.getMonth() + 1tmp += '<table cellpadding="0">'tmp += '<tr class="month"><th colspan="7"><div class="clearfix"><div class="prevMonth">'if(i==0){i1=Date.parse(y + '/' + m + '/1')d1 = new Date(dmin)if(Date.parse(d1.getFullYear() + '/' + (d1.getMonth() + 1) + '/1')<i1){d1 = new Date(y,m-2-f,1)tmp += '<a class="prev" href="javascript:" onclick="CalendarPage(\'' + c + '\',' + d1.getFullYear() + ',' + (d1.getMonth() + 1) + ')" title="上个月"> </a>'}else{tmp += '<a class="prev0" href="javascript:" title="上个月"> </a>'}}tmp+='</div>'tmp += '<div class="dates"><em>' + y + '</em>年<em>' + m + '</em>月</div>'tmp+='<div class="nextMonth">'if(i==f){i1=Date.parse(y + '/' + m + '/1')d1 = new Date(dmax)i2=Date.parse(d1.getFullYear() + '/' + (d1.getMonth() + 1) + '/1')if(i2>i1){d1 = new Date(y,Date.parse(new Date(y,m+1,1))>i2?m-f:m,1)tmp += '<a class="next" href="javascript:" onclick="CalendarPage(\'' + c + '\',' + d1.getFullYear() + ',' + (d1.getMonth() + 1) + ')" title="下个月"> </a>'}else{tmp += '<a class="next0" href="javascript:" title="下个月"> </a>'}}tmp += '</div></div></th></tr>'tmp += ' <tr class="week">'tmp += '<th class="weekEnd">星期日</th>'tmp += '<th>星期一</th>'tmp += '<th>星期二</th>'tmp += '<th>星期三</th>'tmp += '<th>星期四</th>'tmp += '<th>星期五</th>'tmp += '<th class="weekEnd">星期六</th>'tmp += ' </tr>'var maxdays = (new Date(Date.parse(new Date(y,m,1)) - 86400000)).getDate() //当前月的天数d1 = new Date(y,m-1)//要显示的日期i1 = d1.getDay()//这个月的第一天是星期几for (var j = 1j <= 6j++) {tmp += '<tr>'for (var k = 1k <= 7k++) {i2 = (j - 1) * 7 + k - i1if (i2 <1 || i2 >maxdays) {tmp += '<td></td>'} else {i3 = Date.parse(new Date(y,m-1,i2))d1=new Date(i3)//农历(ll的值为农历)/*var ll=ca.getlf(d1)if(ll==''){ll=ca.getsf(d1)if(ll==''){ll=ca.getst(d1)if(ll=='')ll=ca.getls(d1)[3]}}*/tmp+='<td'if (today == i3){tmp+=' class="cur"'}if (i3 <dmin || i3 >dmax) {tmp += '><p><em>' + i2 + '</em></td>'} else {tmp += ' week="' + (k - 1) + '" id="' + y + '-' + m + '-' + i2 + '"><p><em>' + i2 + '</em></p></td>'}}}tmp += '</tr>'}tmp += '</table>'}$('#' + c).append(tmp) var obj,crowdid=0for(var i in currentLP.crowd){if(crowdid==0)crowdid=currentLP.crowd[i].id}a.each(function(){obj=$('#'+$(this).attr('d'))var j={d:$(this).attr('d'),n:$(this).attr('n'),c:[]},k=0$(this).children('c').each(function(i){if(crowdid==$(this).attr('i'))k=ij.c.push({i:$(this).attr('i'),n:$(this).attr('n'),p:$(this).attr('p')})})obj.data('i',j).attr('v',1).append('<p><em class="money">'+(j.c[k].p==-1?'电询':'¥'+j.c[k].p)+'</em></p><p>余位'+(j.n==-1||j.n>9?'><em class="money">9</em>':'<em class="money">'+j.n+'</em>')+'</p>')}) if ($.isFunction(fu)){$('#' + c +' td[v]').click(function (){ fu(this)}).hover( function () {$(this).addClass("hover")}, function () {$(this).removeClass("hover")})}}
这样可以么?
1.写一个获取当前时间的脚本2.写一个获取事件源绝对坐标的脚本
3.写一个日历生成脚本,根据年(闰年)月(大小月)周(周一到周日)生成日历
4.当事件源(一般是文本框)获得焦点的时候,触发获取绝对坐标的事件,然后生成当前月的日历,将此日历的坐标用脚本移动到文本框下方
5.生成日历的时候,给所有日添加返回事件,把当前选中的年月日反馈
6.用脚本把反馈回来的日期信息,写入事件源控件
7.网上日历控件一大堆,最好别自己写,很容易蛋疼的