【www.gdgbn.com--js教程】





js日期时间控件
<script>
// default settings
var fontface="arial";
var fontsize=12;

var titlewidth=90;
var titlemode=1;
var daywidth=12;
var daydigits=1;

var titlecolor="#cccccc";
var dayscolor="#cccccc";
var bodycolor="#ffffff";
var daycolor="#ffffff";
var currentdaycolor="#333333";
var footcolor="#cccccc";
var bordercolor="#333333";

var titlefontcolor = "#333333";
var daysfontcolor = "#333333";
var dayfontcolor = "#333333";
var currentdayfontcolor = "#ffffff";
var footfontcolor = "#333333";

var calformat = "yyyy-mm-dd";

var weekday = 0;
// ------

// codes
var calwidth=200, calheight=240, caloffsetx=-200, caloffsety=16;
var calwin=null;
var winx=0, winy=0;
var cal="cal";
var cals=new array();
var currentcal=null;

var yxmonths=new array("1月", "2月", "3月", "4月", "5月", "6月", "7月", "8月", "9月", "10月", "11月", "12月");
var yxdays=new array("日", "一", "二", "三", "四", "五", "六", "日");
var yxlinks=new array("[关闭]", "[清除]");

var isopera=(navigator.useragent.indexof("opera")!=-1)?true:false;
var isopera5=(navigator.appversion.indexof("msie 5")!=-1 && navigator.useragent.indexof("opera 5")!=-1)?true:false;
var isopera6=(navigator.appversion.indexof("msie 5")!=-1 && navigator.useragent.indexof("opera 6")!=-1)?true:false;
var isn6=(navigator.useragent.indexof("gecko")!=-1);
var isn4=(document.layers)?true:false;
var ismac=(navigator.useragent.indexof("mac")!=-1);
var isie=(document.all && !isopera && (!ismac || navigator.appversion.indexof("msie 4")==-1))?true:false;

if (isn4) {
  fontsize+=2;
}

var span2="";

function span1(tag) {
  return "";
}
function spanx(tag, color) {
  return "."+tag+" { font-family:"+fontface+"; font-size:"+fontsize+"px; color:"+color+"; }n";
}

function a1(tag) {
  return " }

function ax(tag, color) {
  return "."+tag+" { text-decoration:none; color:"+color+"; }n";
}

function calobj(name, title, field, form) {
  this.name = name;
  this.title = title;
  this.field = field;
  this.formname = form;
  this.form = null
}

function setfont(font, size) {
  if (font != "") {
    fontface=font;
  }
  if (size > 0) {
    fontsize=size;

    if (isn4) {
      fontsize+=2;
    }
  }
}

function setwidth(twidth, tmode, dwidth, ddigits) {
  if (twidth > 0) {
    titlewidth=twidth;
  }
  if (tmode == 1 || tmode == 2) {
    titlemode=tmode;
  }
  if (dwidth > 0) {
    daywidth=dwidth;
  }
  if (ddigits > 0) {
    daydigits=ddigits;
  }
}

function setcolor(tcolor, dscolor, bcolor, dcolor, cdcolor, fcolor, bdcolor) {
  if (tcolor != "") {
    titlecolor=tcolor;
  }
  if (dscolor != "") {
    dayscolor=dscolor;
  }
  if (bcolor != "") {
    bodycolor=bcolor;
  }
  if (dcolor != "") {
    daycolor=dcolor;
  }
  if (cdcolor != "") {
    currentdaycolor=cdcolor;
  }
  if (fcolor != "") {
    footcolor=fcolor;
  }
  if (bdcolor != "") {
    bordercolor=bdcolor;
  }
}

function setfontcolor(tcolorfont, dscolorfont, dcolorfont, cdcolorfont, fcolorfont) {
  if (tcolorfont != "") {
    titlefontcolor=tcolorfont;
  }
  if (dscolorfont != "") {
    daysfontcolor=dscolorfont;
  }
  if (dcolorfont != "") {
    dayfontcolor=dcolorfont;
  }
  if (cdcolorfont != "") {
    currentdayfontcolor=cdcolorfont;
  }
  if (fcolorfont != "") {
    footfontcolor=fcolorfont;
  }
}

function setformat(format) {
  calformat = format;
}

function setsize(width, height, ox, oy) {
  if (width > 0) {
    calwidth=width;
  }
  if (height > 0) {
    calheight=height;
  }

  caloffsetx=ox;
  caloffsety=oy;
}

function setweekday(wday) {
  if (wday == 0 || wday == 1) {
    weekday = wday;
  }
}

function setmonthnames(janname, febname, marname, aprname, mayname, junname, julname, augname, sepname, octname, novname, decname) {
  if (janname != "") {
    yxmonths[0] = janname;
  }
  if (febname != "") {
    yxmonths[1] = febname;
  }
  if (marname != "") {
    yxmonths[2] = marname;
  }
  if (aprname != "") {
    yxmonths[3] = aprname;
  }
  if (mayname != "") {
    yxmonths[4] = mayname;
  }
  if (junname != "") {
    yxmonths[5] = junname;
  }
  if (julname != "") {
    yxmonths[6] = julname;
  }
  if (augname != "") {
    yxmonths[7] = augname;
  }
  if (sepname != "") {
    yxmonths[8] = sepname;
  }
  if (octname != "") {
    yxmonths[9] = octname;
  }
  if (novname != "") {
    yxmonths[10] = novname;
  }
  if (decname != "") {
    yxmonths[11] = decname;
  }
}

function setdaynames(sunname, monname, tuename, wedname, thuname, friname, satname) {
  if (sunname != "") {
    yxdays[0] = sunname;
    yxdays[7] = sunname;
  }
  if (monname != "") {
    yxdays[1] = monname;
  }
  if (tuename != "") {
    yxdays[2] = tuename;
  }
  if (wedname != "") {
    yxdays[3] = wedname;
  }
  if (thuname != "") {
    yxdays[4] = thuname;
  }
  if (friname != "") {
    yxdays[5] = friname;
  }
  if (satname != "") {
    yxdays[6] = satname;
  }
}

function setlinknames(closelink, clearlink) {
  if (closelink != "") {
    yxlinks[0] = closelink;
  }
  if (clearlink != "") {
    yxlinks[1] = clearlink;
  }
}

function addcalendar(name, title, field, form) {
  cals[cals.length] = new calobj(name, title, field, form);
}

function findcalendar(name) {
  for (var i = 0; i < cals.length; i++) {
    if (cals[i].name == name) {
      if (cals[i].form == null) {
        if (cals[i].formname == "") {
          if (document.forms[0]) {
            cals[i].form = document.forms[0];
          }
        }
        else if (document.forms[cals[i].formname]) {
          cals[i].form = document.forms[cals[i].formname];
        }
      }

      return cals[i];
    }
  }

  return null;
}

function getdayname(y,m,d) {
  var wd=new date(y,m,d);
  return yxdays[wd.getday()].substring(0,3);
}

function getmonthfromname(m3) {
  for (var i = 0; i < yxmonths.length; i++) {
    if (yxmonths[i].tolowercase().substring(0,3) == m3.tolowercase()) {
      return i;
    }
  }

  return 0;
}

function getformat() {
  var calf = calformat;

  calf = calf.replace(//g, "\");
  calf = calf.replace(///g, "/");
  calf = calf.replace(/[/g, "[");
  calf = calf.replace(/]/g, "]");
  calf = calf.replace(/(/g, "(");
  calf = calf.replace(/)/g, ")");
  calf = calf.replace(/{/g, "{");
  calf = calf.replace(/}/g, "}");
  calf = calf.replace(/   calf = calf.replace(/>/g, ">");
  calf = calf.replace(/|/g, "|");
  calf = calf.replace(/*/g, "*");
  calf = calf.replace(/?/g, "?");
  calf = calf.replace(/+/g, "+");
  calf = calf.replace(/^/g, "^");
  calf = calf.replace(/$/g, "$");

  calf = calf.replace(/dd/i, "dd");
  calf = calf.replace(/mm/i, "dd");
  calf = calf.replace(/yyyy/i, "dddd");
  calf = calf.replace(/day/i, "www");
  calf = calf.replace(/mon/i, "www");

  return new regexp(calf);
}

function getdatenumbers(date) {
  var y, m, d;

  var yidx = calformat.search(/yyyy/i);
  var midx = calformat.search(/mm/i);
  var m3idx = calformat.search(/mon/i);
  var didx = calformat.search(/dd/i);

  y=date.substring(yidx,yidx+4)-0;
  if (midx != -1) {
    m=date.substring(midx,midx+2)-1;
  }
  else {
    var m = getmonthfromname(date.substring(m3idx,m3idx+3));
  }
  d=date.substring(didx,didx+2)-0;

  return new array(y,m,d);
}

function hidecal() {
  calwin.close();
  calwin = null;
  window.status = "";
}

function getleftie(x,m) {
  var dx=0;
  if (x.tagname=="td"){
    dx=x.offsetleft;
  }
  else if (x.tagname=="table") {
    dx=x.offsetleft;
    if (m) { dx+=(x.cellpadding!=""?parseint(x.cellpadding):2); m=false; }
  }
  return dx+(x.parentelement.tagname=="body"?0:getleftie(x.parentelement,m));
}
function gettopie(x,m) {
  var dy=0;
  if (x.tagname=="tr"){
    dy=x.offsettop;
  }
  else if (x.tagname=="table") {
    dy=x.offsettop;
    if (m) { dy+=(x.cellpadding!=""?parseint(x.cellpadding):2); m=false; }
  }
  return dy+(x.parentelement.tagname=="body"?0:gettopie(x.parentelement,m));
}

function getleftn4(l) { return l.pagex; }
function gettopn4(l) { return l.pagey; }

function getleftn6(l) { return l.offsetleft; }
function gettopn6(l) { return l.offsettop; }

function lastday(d) {
  var yy=d.getfullyear(), mm=d.getmonth();
  for (var i=31; i>=28; i--) {
    var nd=new date(yy,mm,i);
    if (mm == nd.getmonth()) {
      return i;
    }
  }
}

function firstday(d) {
  var yy=d.getfullyear(), mm=d.getmonth();
  var fd=new date(yy,mm,1);
  return fd.getday();
}

function daydisplay(i) {
  if (daydigits == 0) {
    return yxdays[i];
  }
  else {
    return yxdays[i].substring(0,daydigits);
  }
}

function caltitle(d) {
  var yy=d.getfullyear(), mm=yxmonths[d.getmonth()];
  var s;

  if (titlemode == 2) {
    s="n"+span1("title")+""+a1("titlea")+""网页特效:if(window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(-10)"> « "+a1("titlea")+""javascript:if(window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(-1)">‹ "+span2+""+span1("title")+yy+span2+""+span1("title")+""+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(1)"> › "+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(10)">» "+span2+""+span1("title")+""+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.prepmonth) window.opener.prepmonth("+d.getmonth()+")"> ‹ "+span2+""+span1("title")+mm+span2+""+span1("title")+""+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.nextmonth) window.opener.nextmonth("+d.getmonth()+")"> › "+span2+"n";
  }
  else {
    s="n"+span1("title")+""+a1("titlea")+""javascript:if(window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(-1)"> « "+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.prepmonth) window.opener.prepmonth("+d.getmonth()+")">‹ "+span2+""+span1("title")+yy+"年 "+mm+span2+""+span1("title")+""+a1("titlea")+""javascript:if (window.opener && !window.opener.closed && window.opener.nextmonth) window.opener.nextmonth("+d.getmonth()+")"> › "+a1("titlea")+""javascript:if(window.opener && !window.opener.closed && window.opener.moveyear) window.opener.moveyear(1)">» "+span2+"n";
  }

  for (var i=weekday; i     s+=""+span1("days")+daydisplay(i)+span2+"";
  }

  s+="";

  return s;
}

function calheader() {
  return "n"+currentcal.title+"nnnnn";
}

function calfooter() {
  return ""+span1("foot")+""+a1("foota")+""javascript:if (window.opener && !window.opener.closed && window.opener.hidecal) window.opener.hidecal()">"+yxlinks[0]+"  "+a1("foota")+""javascript:if (window.opener && !window.opener.closed && window.opener.cleardate) window.opener.cleardate()">"+yxlinks[1]+""+span2+"nn";
}

function calbody(d,day) {
  var s="", daycount=1, fd=firstday(d), ld=lastday(d);

  if (weekday > 0 && fd == 0) {
    fd = 7;
  }

  for (var i=0; i<6; i++) {
    s+="";
    for (var j=weekday; j       if (i*7+jld) {
        s+=""+span1("day")+" "+span2+"";
      }
      else {
        var bgcolor=daycolor;
        var fgtag="day";
        var fgtaga="daya";
        if (daycount==day) {
          bgcolor=currentdaycolor;
          fgtag="currentday";
          fgtaga="currenta";
        }
       
        s+=""+span1(fgtag)+a1(fgtaga)+""javascript: if (window.opener && !window.opener.closed && window.opener.pickdate) window.opener.pickdate("+daycount+")">"+(daycount++)+""+span2+"";
      }
    }
    s+="";
  }

  return s;
}

function moveyear(dy) {
  cy+=dy;
  var nd=new date(cy,cm,1);
  changecal(nd);
}

function prepmonth(m) {
  cm=m-1;
  if (cm<0) { cm=11; cy--; }
  var nd=new date(cy,cm,1);
  changecal(nd);
}

function nextmonth(m) {
  cm=m+1;
  if (cm>11) { cm=0; cy++;}
  var nd=new date(cy,cm,1);
  changecal(nd);
}

function changecal(d) {
  var dd = 0;

  if (currentcal != null) {
    var calre = getformat();

    if (currentcal.form[currentcal.field].value!="" && calre.test(currentcal.form[currentcal.field].value)) {
      var cd = getdatenumbers(currentcal.form[currentcal.field].value);
      if (cd[0] == d.getfullyear() && cd[1] == d.getmonth()) {
        dd=cd[2];
      }
    }
    else {
      var cd = new date();
      if (cd.getfullyear() == d.getfullyear() && cd.getmonth() == d.getmonth()) {
        dd=cd.getdate();
      }
    }
  }

  var calendar=calheader()+caltitle(d)+calbody(d,dd)+calfooter();

  calwin.document.open();
  calwin.document.write(calendar);
  calwin.document.close();
}

function markclick(e) {
  if (isie || isopera6) {
    winx=event.screenx;
    winy=event.screeny;
  }
  else if (isn4 || isn6) {
    winx=e.screenx;
    winy=e.screeny;

    document.routeevent(e);
  }

  return true;
}

function showcal(name) {
  var lastcal=currentcal;
  var d=new date(), hascal=false;

  currentcal = findcalendar(name);

  if (currentcal != null && currentcal.form != null && currentcal.form[currentcal.field]) {
    var calre = getformat();

    if (currentcal.form[currentcal.field].value!="" && calre.test(currentcal.form[currentcal.field].value)) {
      var cd = getdatenumbers(currentcal.form[currentcal.field].value);
      d=new date(cd[0],cd[1],cd[2]);

      cy=cd[0];
      cm=cd[1];
      dd=cd[2];
    }
    else {
      cy=d.getfullyear();
      cm=d.getmonth();
      dd=d.getdate();
    }

    var calendar=calheader()+caltitle(d)+calbody(d,dd)+calfooter();

    if (calwin != null && !calwin.closed) {
      hascal=true;
      calwin.moveto(winx+caloffsetx,winy+caloffsety);
    }

    if (!hascal) {
      if (isie || isopera6) {
        calwin=window.open("","cal","toolbar=0,width="+calwidth+",height="+calheight+",left="+(winx+caloffsetx)+",top="+(winy+caloffsety));
      }
      else {
        calwin=window.open("","cal","toolbar=0,width="+calwidth+",height="+calheight+",screenx="+(winx+caloffsetx)+",screeny="+(winy+caloffsety));
      }
    }

    calwin.document.open();
    calwin.document.write(calendar);
    calwin.document.close();

    calwin.focus();
  }
  else {
    if (currentcal == null) {
      window.status = "calendar ["+name+"] not found.";
    }
    else if (!currentcal.form) {
      window.status = "form ["+currentcal.formname+"] not found.";
    }
    else if (!currentcal.form[currentcal.field]) {
      window.status = "form field ["+currentcal.formname+"."+currentcal.field+"] not found.";
    }

    if (lastcal != null) {
      currentcal = lastcal;
    }
  }
}

function get2digits(n) {
  return ((n<10)?"0":"")+n;
}

function cleardate() {
  currentcal.form[currentcal.field].value="";
  hidecal();
}

function pickdate(d) {
  hidecal();
  window.focus();

  var date=calformat;
  date = date.replace(/yyyy/i, cy);
  date = date.replace(/mm/i, get2digits(cm+1));
  date = date.replace(/mon/, yxmonths[cm].substring(0,3).touppercase());
  date = date.replace(/mon/i, yxmonths[cm].substring(0,3));
  date = date.replace(/dd/i, get2digits(d));
  date = date.replace(/day/, getdayname(cy,cm,d).touppercase());
  date = date.replace(/day/i, getdayname(cy,cm,d));

  currentcal.form[currentcal.field].value=date;
  // ie5/mac needs focus to show the value, weird.
  currentcal.form[currentcal.field].focus();
}
// ------

// user functions
function checkdate(name) {
  var thiscal = findcalendar(name);

  if (thiscal != null && thiscal.form != null && thiscal.form[thiscal.field]) {
    var calre = getformat();

    if (calre.test(thiscal.form[thiscal.field].value)) {
      return 0;
    }
    else {
      return 1;
    }
  }
  else {
    return 2;
  }
}

function getcurrentdate() {
  var date=calformat, d = new date();
  date = date.replace(/yyyy/i, d.getfullyear());
  date = date.replace(/mm/i, get2digits(d.getmonth()+1));
  date = date.replace(/dd/i, get2digits(d.getdate()));

  return date;
}

function comparedates(date1, date2) {
  var calre = getformat();
  var d1, d2;

  if (calre.test(date1)) {
    d1 = getnumbers(date1);
  }
  else {
    d1 = getnumbers(getcurrentdate());
  }

  if (calre.test(date2)) {
    d2 = getnumbers(date2);
  }
  else {
    d2 = getnumbers(getcurrentdate());
  }

  var dstr1 = d1[0] + "" + d1[1] + "" + d1[2];
  var dstr2 = d2[0] + "" + d2[1] + "" + d2[2];

  if (dstr1 == dstr2) {
    return 0;
  }
  else if (dstr1 > dstr2) {
    return 1;
  }
  else {
    return -1;
  }
}

function getnumbers(date) {
  var calre = getformat();
  var y, m, d;

  if (calre.test(date)) {
    var yidx = calformat.search(/yyyy/i);
    var midx = calformat.search(/mm/i);
    var m3idx = calformat.search(/mon/i);
    var didx = calformat.search(/dd/i);

    y=date.substring(yidx,yidx+4);
    if (midx != -1) {
      m=date.substring(midx,midx+2);
    }
    else {
      var mm=getmonthfromname(date.substring(m3idx,m3idx+3))+1;
      m=(mm<10)?("0"+mm):(""+mm);
    }
    d=date.substring(didx,didx+2);

    return new array(y,m,d);
  }
  else {
    return new array("", "", "");
  }
}
// ------

if (isn4 || isn6) {
  document.captureevents(event.click);
}
document.onclick=markclick;
</script>



 
 
 


 
    会员号
    姓名
    电话
    性别
    生日
 
 
    xxx
    李逵
    13589885595
    男
    19880296
 
 
    xxx
    李渊
    13589885595
    女
    19683635
 


本文来源:http://www.gdgbn.com/wangyezhizuo/27620/