js日历控件问题,大家来研究下,如何设置今天以前的日期不可选
当前的控件,每天都是可以选的,而我希望今天之前的日期不可选,改如何修改,我把日期控件主要代码贴出来:
// 主调用函数是 setday(this,[object])和setday(this),[object]是控件输出的控件名,举两个例子:
// 一、 <input name=txt> <input type=button value=setday onclick="setday(this,document.all.txt)">
// 二、 <input onfocus="setday(this)">
var outObject;
var outButton;//点击的按钮
var outDate="";//存放对象的日期
var odatelayer=window.frames.endDateLayer.document.all;//存放日历对象
var odatelayer=window.endDateLayer.document.all;
function setday(tt,obj) //主调函数
{
if (arguments.length > 2){alert("对不起!传入本控件的参数太多!");return;}
if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}
var dads = document.all.endDateLayer.style;
var th = tt;
var ttop = tt.offsetTop; //TT控件的定位点高
var thei = tt.clientHeight; //TT控件本身的高
var tleft = tt.offsetLeft; //TT控件的定位点宽
var ttyp = tt.type;//TT控件的类型
while (tt = tt.offsetParent){ttop+=tt.offsetTop; tleft+=tt.offsetLeft;}
dads.top = (ttyp=="image") ? ttop+thei : ttop+thei+6;
dads.left = tleft;
// outObject = (arguments.length == 1) ? th : obj;
// outButton = (arguments.length == 1) ? null : th;//设定外部点击的按钮
outObject = th;
outButton = null;
//根据当前输入框的日期显示日历的年月
var reg = /^(\d+)-(\d{1,2})-(\d{1,2})/;//不含时间
var r = (arguments.length == 1) ? outObject.value.match(reg) : obj.value.match(reg);
if(r!=null){
r[2]=r[2]-1;
var d=new Date(r[1],r[2],r[3]);
if(d.getFullYear()==r[1] && d.getMonth()==r[2] && d.getDate()==r[3])
{
outDate=d;
parent.meizzTheYear = r[1];
parent.meizzTheMonth = r[2];
parent.meizzTheDate = r[3];
}
else
{
outDate="";
}
meizzSetDay(r[1],r[2]+1);
}
else
{
outDate="";
meizzSetDay(new Date().getFullYear(), new Date().getMonth() + 1);
}
dads.display = '';
meizzWriteHead(meizzTheYear,meizzTheMonth);
try
{
event.returnValue=false;
}
catch (e)
{
//此处排除错误,错误原因暂未找到。
}
}
var meizzTheYear=new Date().getFullYear(); //定义年的变量的初始值
var meizzTheMonth=new Date().getMonth()+1; //定义月的变量的初始值
var meizzTheDate=new Date().getDate();//定义日的变量的初始值
var meizzWDay=new Array(37);//定义写日期的数组
var meizzWDayT=new Array(37);//定义写日期的数组 第二个月
function meizzWriteHead(yy,mm,ss)//往 head 中写入当前的年与月
{
odatelayer.meizzYearHead.innerText= yy + ".";
odatelayer.meizzMonthHead.innerText= format(mm);
if(mm==12){
var y2=parseInt(yy)+1;
odatelayer.meizzYearHead2.innerText= y2 + ".";
odatelayer.meizzMonthHead2.innerText= 1 ;
}
else{
odatelayer.meizzYearHead2.innerText= yy + ".";
odatelayer.meizzMonthHead2.innerText = format(mm+1) ;
}
}
function meizzSetDay(yy,mm)//主要的写程序**********
{
meizzWriteHead(yy,mm);
//设置当前年月的公共变量为传入值
meizzTheYear=yy;
meizzTheMonth=mm;
//第一个月
for (var i = 0; i < 37; i++){meizzWDay[i]=""};//将显示框的内容全部清空
var day1 = 1,day2=1,firstday = new Date(yy,mm-1,1).getDay();//某月第一天的星期几
for (i = firstday; day1 < GetMonthCount(yy,mm)+1; i++) { meizzWDay[i]=day1;day1++; }
for (i = 0; i < 37; i++)
{
var da = eval("odatelayer.meizzDay"+i)//书写新的一个月的日期星期排列
//初始化
da.style.backgroundColor="#ffffff";
da.onmouseover=Function("onMouseOut(this)");
da.onmouseout=Function("onMouseOut(this)");
if (meizzWDay[i]!="")
{
//初始化边框
da.style.color="#FF9900";
//本月的部分
da.innerHTML=" <b>" + meizzWDay[i] + " </b>";
da.title=mm +"月" + meizzWDay[i] + "日";
da.onclick=Function("meizzDayClick(this.innerText,0)");//给td赋予onclick事件的处理
//如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景
if(!outDate){
if((yy < new Date().getFullYear())||(yy == new Date().getFullYear() && mm < new Date().getMonth()+1 )||(yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] < new Date().getDate())){
da.style.color="#999999";
if(yy == new Date().getFullYear() && mm == new Date().getMonth()+1){
da.disabled=true;
}
}
else if((yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate())){
da.style.backgroundColor="#FFF4D2";
da.onmouseover=Function("onMouseOver(this)");
da.onmouseout=Function("onMouseOutToday(this)");
}
else {
da.onmouseover=Function("onMouseOver(this)");
}
}
else
{
if((yy < new Date().getFullYear())||(yy == new Date().getFullYear() && mm < new Date().getMonth()+1 )||(yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] < new Date().getDate())){
da.style.color="#999999";
}
else if (yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDay[i] == new Date().getDate()){
da.style.backgroundColor="#FFF4D2";
da.onmouseover=Function("onMouseOver(this)");
da.onmouseout=Function("onMouseOutToday(this)");
}
else if(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDay[i]==outDate.getDate()){
da.style.backgroundColor="#FFCC66";
da.onmouseover=Function("onMouseOver(this)");
da.onmouseout=Function("onMouseOutSelected(this)");
}
else{
da.onmouseover=Function("onMouseOver(this)");
}
}
da.style.cursor="hand";
}
else { da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default";}
}
//第二个月
for (i = 0; i < 37; i++){meizzWDayT[i]=""};//将显示框的内容全部清空
day1 = 1,day2=1,firstday = new Date(yy,mm,1).getDay();//某月第一天的星期几
if(mm==12){
yy++;mm=1;
}
else{
mm++;
}
for (i = firstday; day1 < GetMonthCount(yy,mm)+1; i++) { meizzWDayT[i]=day1;day1++; }
for (i = 0; i < 37; i++)
{
var da2 = eval("odatelayer.meizzDayT"+i)//书写新的一个月的日期星期排列
//初始化
da2.style.backgroundColor="#ffffff";
da2.onmouseover=Function("onMouseOut(this)");
da2.onmouseout=Function("onMouseOut(this)");
if (meizzWDayT[i]!="")
{
//初始化边框
da2.style.color="#FF9900";
//本月的部分
da2.innerHTML=" <b>" + meizzWDayT[i] + " </b>";
da2.title=mm +"月" + meizzWDayT[i] + "日";
da2.onclick=Function("meizzDayTClick(this.innerText,0)");//给td赋予onclick事件的处理
//如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景
if(!outDate){
if((yy < new Date().getFullYear())||(yy == new Date().getFullYear() && mm < new Date().getMonth()+1 )||(yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDayT[i] < new Date().getDate())){
da2.style.color="#999999";
}
else if((yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDayT[i] == new Date().getDate())){
da2.style.backgroundColor="#FFF4D2";
da2.onmouseover=Function("onMouseOver(this)");
da2.onmouseout=Function("onMouseOutToday(this)");
}
else {
da2.onmouseover=Function("onMouseOver(this)");
}
}
else
{
if((yy < new Date().getFullYear())||(yy == new Date().getFullYear() && mm < new Date().getMonth()+1 )||(yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDayT[i] < new Date().getDate())){
da2.style.color="#999999";
}
else if (yy == new Date().getFullYear() && mm == new Date().getMonth()+1 && meizzWDayT[i] == new Date().getDate()){
da2.style.backgroundColor="#FFF4D2";
da2.onmouseover=Function("onMouseOver(this)");
da2.onmouseout=Function("onMouseOutToday(this)");
}
else if(yy==outDate.getFullYear() && mm== outDate.getMonth() + 1 && meizzWDayT[i]==outDate.getDate()){
da2.style.backgroundColor="#FFCC66";
da2.onmouseover=Function("onMouseOver(this)");
da2.onmouseout=Function("onMouseOutSelected(this)");
}
else{
da2.onmouseover=Function("onMouseOver(this)");
}
}
da2.style.cursor="hand";
}
else { da2.innerHTML="";da2.style.backgroundColor="";da2.style.cursor="default"; }
}
}