免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1123 | 回复: 0
打印 上一主题 下一主题

JS年月日菜单 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-12-21 16:59 |只看该作者 |倒序浏览


document.writeln('');
document.writeln('');
document.writeln('');
document.writeln('');
document.writeln(' ');
document.writeln(' );
document.writeln('  title="向前翻 月" Author=meizz>');
document.writeln(' ');
document.writeln('  年 );
document.writeln(' id=meizzMonthHead Author=meizz > 月');
document.writeln(' );
document.writeln('  title="往后翻 月" Author=meizz>>>');
document.writeln(' ');
document.writeln(' ');
document.writeln('');
document.writeln('日');
document.writeln('一二');
document.writeln('三四');
document.writeln('五六');
document.writeln('');
document.writeln(' ');
document.writeln(' ');
var n=0; for (j=0;j5;j++){ document.writeln (' '); for (i=0;i7;i++){
document.writeln('+n+' style="font-size:12px" Author=meizz onclick=meizzDayClick(this.innerText)>');n++;}
document.writeln('');}
document.writeln(' );
document.writeln(' onclick=meizzDayClick(this.innerText)>');
document.writeln(' ');
document.writeln(' ');
document.writeln(' ');
document.writeln(' );
document.writeln(' onfocus="this.blur()" style="font-size: 12px; height: 20px">);
document.writeln(' value=");
document.writeln(' Author=meizz align=center>);
document.writeln(' onfocus="this.blur()" title="转到今天的日期" style="font-size: 12px; height: 20px">);
document.writeln(' Author=meizz align=right>"  ');
document.writeln(' onfocus="this.blur()" title="往后翻 月" style="font-size: 12px; height: 20px">);
document.writeln(' Author=meizz type=button value=">>" title="往后翻 年" ');
document.writeln(' onfocus="this.blur()" style="font-size: 12px; height: 20px">');
document.writeln(''); 
//==================================================== WEB 页面显示部分 ======================================================
var outObject;
function setday(tt,obj) //主调函数
{
  if (arguments.length > 2){alert("对不起!传入本控件的参数太多!");return;}
  if (arguments.length == 0){alert("对不起!您没有传回本控件任何参数!");return;}
  var dads = document.all.meizzDateLayer.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;
  dads.display = '';
  event.returnValue=false;
} 
var MonHead = new Array(12); //定义阳历中每个月的最大天数
    MonHead[0] = 31; MonHead[1] = 28; MonHead[2] = 31; MonHead[3] = 30; MonHead[4] = 31; MonHead[5] = 30;
    MonHead[6] = 31; MonHead[7] = 31; MonHead[8] = 30; MonHead[9] = 31; MonHead[10] = 30; MonHead[11] = 31; 
var meizzTheYear=new Date().getFullYear(); //定义年的变量的初始值
var meizzTheMonth=new Date().getMonth()+1; //定义月的变量的初始值
var meizzWDay=new Array(37); //定义写日期的数组 
function document.onclick() //任意点击时关闭该控件
{
  with(window.event.srcElement)
  { if (tagName != "INPUT" && getAttribute("Author")==null)
    document.all.meizzDateLayer.style.display="none";
  }
} 
function meizzWriteHead(yy,mm) //往 head 中写入当前的年与月
  { document.all.meizzYearHead.innerText = yy;
    document.all.meizzMonthHead.innerText = mm;
  } 
function tmpSelectYearInnerHTML(strYear) //年份的下拉框
{
  if (strYear.match(/\D/)!=null){alert("年份输入参数不是数字!");return;}
  var m = (strYear) ? strYear : new Date().getFullYear();
  if (m  1000 || m > 9999) {alert("年份值不在 1000 到 9999 之间!");return;}
  var n = m - 10;
  if (n  1000) n = 1000;
  if (n + 26 > 9999) n = 9974;
  var s = "
     s += "onblur='document.all.tmpSelectYearLayer.style.display=\"none\"' "
     s += "onchange='document.all.tmpSelectYearLayer.style.display=\"none\";"
     s += "meizzTheYear = this.value; meizzSetDay(meizzTheYear,meizzTheMonth)'>\r\n";
  var selectInnerHTML = s;
  for (var i = n; i  n + 26; i++)
  {
    if (i == m)
       {selectInnerHTML += " + i + "' selected>" + i + "年" + "\r\n";}
    else {selectInnerHTML += " + i + "'>" + i + "年" + "\r\n";}
  }
  selectInnerHTML += "";
  document.all.tmpSelectYearLayer.style.display="";
  document.all.tmpSelectYearLayer.innerHTML = selectInnerHTML;
  document.all.tmpSelectYear.focus();
} 
function tmpSelectMonthInnerHTML(strMonth) //月份的下拉框
{
  if (strMonth.match(/\D/)!=null){alert("月份输入参数不是数字!");return;}
  var m = (strMonth) ? strMonth : new Date().getMonth() + 1;
  var s = "
     s += "onblur='document.all.tmpSelectMonthLayer.style.display=\"none\"' "
     s += "onchange='document.all.tmpSelectMonthLayer.style.display=\"none\";"
     s += "meizzTheMonth = this.value; meizzSetDay(meizzTheYear,meizzTheMonth)'>\r\n";
  var selectInnerHTML = s;
  for (var i = 1; i  13; i++)
  {
    if (i == m)
       {selectInnerHTML += "+i+"' selected>"+i+"月"+"\r\n";}
    else {selectInnerHTML += "+i+"'>"+i+"月"+"\r\n";}
  }
  selectInnerHTML += "";
  document.all.tmpSelectMonthLayer.style.display="";
  document.all.tmpSelectMonthLayer.innerHTML = selectInnerHTML;
  document.all.tmpSelectMonth.focus();
} 
function closeLayer() //这个层的关闭
  {
    document.all.meizzDateLayer.style.display="none";
  } 
function document.onkeydown()
  {
    if (window.event.keyCode==27)document.all.meizzDateLayer.style.display="none";
  } 
function IsPinYear(year) //判断是否闰平年
  {
    if (0==year%4&&((year%100!=0)||(year%400==0))) return true;else return false;
  } 
function GetMonthCount(year,month) //闰年二月为29天
  {
    var c=MonHead[month-1];if((month==2)&&IsPinYear(year)) c++;return c;
  } 
function GetDOW(day,month,year) //求某天的星期几
  {
    var dt=new Date(year,month-1,day).getDay()/7; return dt;
  } 
function meizzPrevY() //往前翻 Year
  {
    if(meizzTheYear > 999 && meizzTheYear 10000){meizzTheYear--;}
    else{alert("年份超出范围(1000-9999)!");}
    meizzSetDay(meizzTheYear,meizzTheMonth);
  }
function meizzNextY() //往后翻 Year
  {
    if(meizzTheYear > 999 && meizzTheYear 10000){meizzTheYear++;}
    else{alert("年份超出范围(1000-9999)!");}
    meizzSetDay(meizzTheYear,meizzTheMonth);
  }
function meizzToday() //Today Button
  {
    meizzTheYear = new Date().getFullYear();
    meizzTheMonth = new Date().getMonth()+1;
    meizzSetDay(meizzTheYear,meizzTheMonth);
  }
function meizzPrevM() //往前翻月份
  {
    if(meizzTheMonth>1){meizzTheMonth--}else{meizzTheYear--;meizzTheMonth=12;}
    meizzSetDay(meizzTheYear,meizzTheMonth);
  }
function meizzNextM() //往后翻月份
  {
    if(meizzTheMonth==12){meizzTheYear++;meizzTheMonth=1}else{meizzTheMonth++}
    meizzSetDay(meizzTheYear,meizzTheMonth);
  } 
function meizzSetDay(yy,mm) //主要的写程序**********
{
  meizzWriteHead(yy,mm);
  for (var i = 0; i  37; i++){meizzWDay=""}; //将显示框的内容全部清空
  var day1 = 1,firstday = new Date(yy,mm-1,1).getDay(); //某月第一天的星期几
  for (var i = firstday; day1  GetMonthCount(yy,mm)+1; i++){meizzWDay=day1;day1++;}
  for (var i = 0; i  37; i++)
  { var da = eval("document.all.meizzDay"+i) //书写新的一个月的日期星期排列
    if (meizzWDay!="")
      { da.innerHTML = "" + meizzWDay + "";
        da.style.backgroundColor = (yy == new Date().getFullYear() &&
        mm == new Date().getMonth()+1 && meizzWDay == new Date().getDate()) ? "#FFD700" : "#ADD8E6";
        da.style.cursor="hand"
      }
    else{da.innerHTML="";da.style.backgroundColor="";da.style.cursor="default"}
  }
}
function meizzDayClick(n) //点击显示框选取日期,主输入函数*************
{
  var yy = meizzTheYear;
  var mm = meizzTheMonth;
  if (mm  10){mm = "0" + mm;}
  if (outObject)
  {
    if (!n) {outObject.value=""; return;}
    if ( n  10){n = "0" + n;}
    outObject.value= yy + "-" + mm + "-" + n ; //注:在这里你可以输出改成你想要的格式
    closeLayer();
  }
  else {closeLayer(); alert("您所要输出的控件对象并不存在!");}
}
meizzSetDay(meizzTheYear,meizzTheMonth);
// 调用:input name="date" onfocus="setday(this)" size="9" maxlength="10">


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/12228/showart_219258.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP