相当于delphi的日历控件[2]

[入库:2005年8月18日] [更新:2007年3月24日]

本文简介:选择自 lxx8402 的 blog

 if(parseint(obj.innertext) == daystr)
  obj.style.setattribute("border","#006432 1px solid");
 file://else if(parseint(obj.innertext) == nowdaystr)
  file://obj.style.setattribute("border","#ff0000 1px solid");
 else
  obj.style.setattribute("border","#ffffff 1px solid");
}
var tobj;
function showcalendar(stype){
 showtype = stype;
 var obj  = event.srcelement;
 var pobj = obj.parentelement;
 tobj = pobj.childnodes(0);
 v = tobj.value;
 if(v != ""){
  pos = v.indexof("-");
  if(pos != -1 && pos == 4){
   yearstr = parseint(v.substring(0,pos));
   v = v.substring(pos+1,v.length);
  }
  pos = v.indexof("-");
  if(pos != -1){
   monthstr = parseint(v.substring(0,pos));
   v = v.substring(pos+1,v.length);
  }
  if(v.length>0)
   daystr = parseint(v);
 }
 var objparent = obj.offsetparent;
 var left      = obj.offsetleft;
 var top    = obj.offsettop;
 while(objparent.tagname.touppercase() != "body"){
  left += objparent.offsetleft;
  top  += objparent.offsettop;
  objparent = objparent.offsetparent;
 }
 left += obj.offsetwidth;
 top  += obj.offsetheight;

 idcalendar.style.top = top+1;
 idcalendar.style.left = left-260;
 calex = left - 260;
 caley = top + 1;
 idcalendar.innerhtml = initcalendar();
 idcalendar.style.display="";
 hideelement("select");
 /*var left = event.clientx;
 var top  = event.clienty;
 idcalendar.style.top = top+5;
 idcalendar.style.left = left-250;
 idcalendar.innerhtml = initcalendar();
 idcalendar.style.display="";*/
}

function tdclick(){
 daystr = event.srcelement.innertext;
 if(showtype=="day"){
  tobj.value = yearstr + "-" + monthstr + "-" + daystr;
 }
 else{
  tobj.value = yearstr + "-" + monthstr;
 }
 hidecalendar();
}

function getcaletosec(){
 var dt;
 if(showtype=="day")
  dt = new date(monthstr+"/"+daystr+"/"+yearstr);
 else
  dt = new date(monthstr+"/1/"+yearstr);
 var s  = dt.gettime();
 return s/1000;
}

function hidecalendar(){
 idcalendar.style.display = "none";
 showelement("select");
}

function c_mouseup(){
 if(idcalendar == null)
  return;
 var top  = parseint(idcalendar.style.top);
 var left = parseint(idcalendar.style.left);
 var wi   = idcalendar.offsetwidth;
 var he   = idcalendar.offsetheight;
 var x    = event.clientx;
 var y    = event.clienty;
 var x1 = left + wi;
 var y1 = top + he;

 if(x>x1||x<left||y>y1||y<top){
  hidecalendar();
  showelement("select");
 }
}

function hideelement(elmid){
 for (i = 0; i < document.all.tags(elmid).length; i++){
  obj = document.all.tags(elmid)[i];
  if (! obj || ! obj.offsetparent)
   continue;

  objleft   = obj.offsetleft;
  objtop    = obj.offsettop;
  objparent = obj.offsetparent;
  while (objparent.tagname.touppercase() != "body")
  {
   objleft  += objparent.offsetleft;
   objtop   += objparent.offsettop;
   objparent = objparent.offsetparent;
  }

  if(calex > (objleft + obj.offsetwidth) || objleft > (calex + idcalendar.offsetwidth))
   ;
  else if(objtop > (caley + idcalendar.offsetheight))
   ;
  else if(caley > (objtop + obj.offsetheight))
   ;
  else
   obj.style.visibility = "hidden";
 }
}

function showelement(elmid){
 for (i = 0; i < document.all.tags(elmid).length; i++){
  obj = document.all.tags(elmid)[i];
  if (! obj || ! obj.offsetparent)
   continue;
  obj.style.visibility = "";
 }
}

document.onmouseup = c_mouseup;
<!--end-->

本文关键:js,javascript,日历
  相关方案
Google
 

本站最佳浏览方式为 分辨率 1024x768 IE 6.0(或更高版本的 IE浏览器)

go top