当前的控件,每天都是可以选的,而我希望今天之前的日期不可选,改如何修改,我把日期控件主要代码贴出来://  主调用函数是 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"; }
}
}

解决方案 »

  1.   

    其实MyDatePicker也挺好的,这些东西都可以自定义实现。
      

  2.   

    找到给日期添加onclick事件时的语句,给它添加一个判断(是否今天之前的日期).是则不执行添加,反之则添加事件.这样,点击今天之前的日期就不会有反应.
      

  3.   

    else //本月的部分
    {
    da.innerHTML="<b>" + meizzWDay[i] + "</b>";
    da.title=mm +"月" + meizzWDay[i] + "日";
    /*-caiying2009-*/
    if (meizzWDay[i] >= new Date().getDate())
    da.onclick=Function("meizzDayClick(this.innerText,0)"); //给td赋予onclick事件的处理
    else
    da.onclick="caiying2009";
    /*-caiying2009-*/

    //如果是当前选择的日期,则显示亮蓝色的背景;如果是当前日期,则显示暗黄色背景
    if(!outDate)
      

  4.   


    else
    da.onclick=null;