Avatar billede stufdbear Nybegynder
21. januar 2002 - 11:08 Der er 3 kommentarer og
1 løsning

Dynamic Drive Popup Calender

Her er lige 100 nemme point hvis man altså kan finde ud af det for jeg er lidt lost på javascript området =)

Jeg har hentet popup kalenderen fra Dynamic Drive, http://www.dynamicdrive.com/dynamicindex6/popcalendar.htm, og den virker helt efter hensigten... det eneste problem er at den kun viser dags dato og så 13 måneder frem. Da jeg skal bruge muligheden for at kunne vælge i en periode på 2 år, 1 år frem og 1 år tilbage, er der så en som lige hurtigt kunne ændre det, js filen er som følger:
---------------------------

/* PopUp Calendar v2.1
© PCI, Inc.,2000 • Freeware
webmaster@personal-connections.com
+1 (925) 955 1624
Permission granted  for unlimited use so far
as the copyright notice above remains intact. */

/* Settings. Please read readme.html file for instructions*/
var ppcDF = \"m/d/Y\";
var ppcMN = new Array(\"January\",\"February\",\"March\",\"April\",\"May\",\"June\",\"July\",\"August\",\"September\",\"October\",\"November\",\"December\");
var ppcWN = new Array(\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\");
var ppcER = new Array(4);
ppcER[0] = \"Required DHTML functions are not supported in this browser.\";
ppcER[1] = \"Target form field is not assigned or not accessible.\";
ppcER[2] = \"Sorry, the chosen date is not acceptable. Please read instructions on the page.\";
ppcER[3] = \"Unknown error occured while executing this script.\";
var ppcUC = false;
var ppcUX = 4;
var ppcUY = 4;

/* Do not edit below this line unless you are sure what are you doing! */

var ppcIE=(navigator.appName == \"Microsoft Internet Explorer\");
var ppcNN=((navigator.appName == \"Netscape\")&&(document.layers));
var ppcTT=\"<table width=\\\"200\\\" cellspacing=\\\"1\\\" cellpadding=\\\"2\\\" border=\\\"1\\\" bordercolorlight=\\\"#000000\\\" bordercolordark=\\\"#000000\\\">\\n\";
var ppcCD=ppcTT;var ppcFT=\"<font face=\\\"MS Sans Serif, sans-serif\\\" size=\\\"1\\\" color=\\\"#000000\\\">\";var ppcFC=true;
var ppcTI=false;var ppcSV=null;var ppcRL=null;var ppcXC=null;var ppcYC=null;
var ppcML=new Array(31,28,31,30,31,30,31,31,30,31,30,31);
var ppcWE=new Array(\"Sunday\",\"Monday\",\"Tuesday\",\"Wednesday\",\"Thursday\",\"Friday\",\"Saturday\");
var ppcNow=new Date();var ppcPtr=new Date();
if (ppcNN) {
window.captureEvents(Event.RESIZE);
window.onresize = restoreLayers;
document.captureEvents(Event.MOUSEDOWN|Event.MOUSEUP);
document.onmousedown = recordXY;
document.onmouseup = confirmXY;}
function restoreLayers(e) {
if (ppcNN) {
  with (window.document) {
  open(\"text/html\");
  write(\"<html><head><title>Restoring the layer structure...</title></head>\");
  write(\"<body bgcolor=\\\"#FFFFFF\\\" onLoad=\\\"history.go(-1)\\\">\");
  write(\"</body></html>\");
  close();}}}
function recordXY(e) {
if (ppcNN) {
  ppcXC = e.x;
  ppcYC = e.y;
  document.routeEvent(e);}}
function confirmXY(e) {
if (ppcNN) {
  ppcXC = (ppcXC == e.x) ? e.x : null;
  ppcYC = (ppcYC == e.y) ? e.y : null;
  document.routeEvent(e);}}
function getCalendarFor(target,rules) {
ppcSV = target;
ppcRL = rules;
if (ppcFC) {setCalendar();ppcFC = false;}
if ((ppcSV != null)&&(ppcSV)) {
  if (ppcIE) {
  var obj = document.all[\'PopUpCalendar\'];
  obj.style.left = document.body.scrollLeft+event.clientX;
  obj.style.top  = document.body.scrollTop+event.clientY;
  obj.style.visibility = \"visible\";}
  else if (ppcNN) {
  var obj = document.layers[\'PopUpCalendar\'];
  obj.left = ppcXC
  obj.top  = ppcYC
  obj.visibility = \"show\";}
  else {showError(ppcER[0]);}}
else {showError(ppcER[1]);}}
function switchMonth(param) {
var tmp = param.split(\"|\");
setCalendar(tmp[0],tmp[1]);}
function moveMonth(dir) {
var obj = null;
var limit = false;
var tmp,dptrYear,dptrMonth;
if (ppcIE) {obj = document.ppcMonthList.sItem;}
else if (ppcNN) {obj = document.layers[\'PopUpCalendar\'].document.layers[\'monthSelector\'].document.ppcMonthList.sItem;}
else {showError(ppcER[0]);}
if (obj != null) {
  if ((dir.toLowerCase() == \"back\")&&(obj.selectedIndex > 0)) {obj.selectedIndex--;}
  else if ((dir.toLowerCase() == \"forward\")&&(obj.selectedIndex < 12)) {obj.selectedIndex++;}
  else {limit = true;}}
if (!limit) {
  tmp = obj.options[obj.selectedIndex].value.split(\"|\");
  dptrYear  = tmp[0];
  dptrMonth = tmp[1];
  setCalendar(dptrYear,dptrMonth);}
else {
  if (ppcIE) {
  obj.style.backgroundColor = \"#FF0000\";
  window.setTimeout(\"document.ppcMonthList.sItem.style.backgroundColor = \'#FFFFFF\'\",50);}}}
function selectDate(param) {
var arr  = param.split(\"|\");
var year  = arr[0];
var month = arr[1];
var date  = arr[2];
var ptr = parseInt(date);
ppcPtr.setDate(ptr);
if ((ppcSV != null)&&(ppcSV)) {
  if (validDate(date)) {ppcSV.value = dateFormat(year,month,date);hideCalendar();}
  else {showError(ppcER[2]);if (ppcTI) {clearTimeout(ppcTI);ppcTI = false;}}}
else {
  showError(ppcER[1]);
  hideCalendar();}}
function setCalendar(year,month) {
if (year  == null) {year = getFullYear(ppcNow);}
if (month == null) {month = ppcNow.getMonth();setSelectList(year,month);}
if (month == 1) {ppcML[1]  = (isLeap(year)) ? 29 : 28;}
ppcPtr.setYear(year);
ppcPtr.setMonth(month);
ppcPtr.setDate(1);
updateContent();}
function updateContent() {
generateContent();
if (ppcIE) {document.all[\'monthDays\'].innerHTML = ppcCD;}
else if (ppcNN) {
  with (document.layers[\'PopUpCalendar\'].document.layers[\'monthDays\'].document) {
  open(\"text/html\");
  write(\"<html>\\n<head>\\n<title>DynDoc</title>\\n</head>\\n<body bgcolor=\\\"#FFFFFF\\\">\\n\");
  write(ppcCD);
  write(\"</body>\\n</html>\");
  close();}}
else {showError(ppcER[0]);}
ppcCD = ppcTT;}
function generateContent() {
var year  = getFullYear(ppcPtr);
var month = ppcPtr.getMonth();
var date  = 1;
var day  = ppcPtr.getDay();
var len  = ppcML[month];
var bgr,cnt,tmp = \"\";
var j,i = 0;
for (j = 0; j < 7; ++j) {
  if (date > len) {break;}
  for (i = 0; i < 7; ++i) {
  bgr = ((i == 0)||(i == 6)) ? \"#FFFFCC\" : \"#FFFFFF\";
  if (((j == 0)&&(i < day))||(date > len)) {tmp  += makeCell(bgr,year,month,0);}
  else {tmp  += makeCell(bgr,year,month,date);++date;}}
  ppcCD += \"<tr align=\\\"center\\\">\\n\" + tmp + \"</tr>\\n\";tmp = \"\";}
ppcCD += \"</table>\\n\";}
function makeCell(bgr,year,month,date) {
var param = \"\\\'\"+year+\"|\"+month+\"|\"+date+\"\\\'\";
var td1 = \"<td width=\\\"20\\\" bgcolor=\\\"\"+bgr+\"\\\" \";
var td2 = (ppcIE) ? \"</font></span></td>\\n\" : \"</font></a></td>\\n\";
var evt = \"onMouseOver=\\\"this.style.backgroundColor=\\\'#FF0000\\\'\\\" onMouseOut=\\\"this.style.backgroundColor=\\\'\"+bgr+\"\\\'\\\" onMouseUp=\\\"selectDate(\"+param+\")\\\" \";
var ext = \"<span Style=\\\"cursor: hand\\\">\";
var lck = \"<span Style=\\\"cursor: default\\\">\";
var lnk = \"<a href=\\\"java script:selectDate(\"+param+\")\\\" onMouseOver=\\\"window.status=\\\' \\\';return true;\\\">\";
var cellValue = (date != 0) ? date+\"\" : \"&nbsp;\";
if ((ppcNow.getDate() == date)&&(ppcNow.getMonth() == month)&&(getFullYear(ppcNow) == year)) {
  cellValue = \"<b>\"+cellValue+\"</b>\";}
var cellCode = \"\";
if (date == 0) {
  if (ppcIE) {cellCode = td1+\"Style=\\\"cursor: default\\\">\"+lck+ppcFT+cellValue+td2;}
  else {cellCode = td1+\">\"+ppcFT+cellValue+td2;}}
else {
  if (ppcIE) {cellCode = td1+evt+\"Style=\\\"cursor: hand\\\">\"+ext+ppcFT+cellValue+td2;}
  else {
  if (date < 10) {cellValue = \"&nbsp;\" + cellValue + \"&nbsp;\";}
  cellCode = td1+\">\"+lnk+ppcFT+cellValue+td2;}}
return cellCode;}
function setSelectList(year,month) {
var i = 0;
var obj = null;
if (ppcIE) {obj = document.ppcMonthList.sItem;}
else if (ppcNN) {obj = document.layers[\'PopUpCalendar\'].document.layers[\'monthSelector\'].document.ppcMonthList.sItem;}
else {/* NOP */}
while (i < 13) {
  obj.options[i].value = year + \"|\" + month;
  obj.options[i].text  = year + \" • \" + ppcMN[month];
  i++;
  month++;
  if (month == 12) {year++;month = 0;}}}
function hideCalendar() {
if (ppcIE) {document.all[\'PopUpCalendar\'].style.visibility = \"hidden\";}
else if (ppcNN) {document.layers[\'PopUpCalendar\'].visibility = \"hide\";window.status = \" \";}
else {/* NOP */}
ppcTI = false;
setCalendar();
ppcSV = null;
if (ppcIE) {var obj = document.ppcMonthList.sItem;}
else if (ppcNN) {var obj = document.layers[\'PopUpCalendar\'].document.layers[\'monthSelector\'].document.ppcMonthList.sItem;}
else {/* NOP */}
obj.selectedIndex = 0;}
function showError(message) {
window.alert(\"[ PopUp Calendar ]\\n\\n\" + message);}
function isLeap(year) {
if ((year%400==0)||((year%4==0)&&(year%100!=0))) {return true;}
else {return false;}}
function getFullYear(obj) {
if (ppcNN) {return obj.getYear() + 1900;}
else {return obj.getYear();}}
function validDate(date) {
var reply = true;
if (ppcRL == null) {/* NOP */}
else {
  var arr = ppcRL.split(\":\");
  var mode = arr[0];
  var arg  = arr[1];
  var key  = arr[2].charAt(0).toLowerCase();
  if (key != \"d\") {
  var day = ppcPtr.getDay();
  var orn = isEvenOrOdd(date);
  reply = (mode == \"[^]\") ? !((day == arg)&&((orn == key)||(key == \"a\"))) : ((day == arg)&&((orn == key)||(key == \"a\")));}
  else {reply = (mode == \"[^]\") ? (date != arg) : (date == arg);}}
return reply;}
function isEvenOrOdd(date) {
if (date - 21 > 0) {return \"e\";}
else if (date - 14 > 0) {return \"o\";}
else if (date - 7 > 0) {return \"e\";}
else {return \"o\";}}
function dateFormat(year,month,date) {
if (ppcDF == null) {ppcDF = \"m/d/Y\";}
var day = ppcPtr.getDay();
var crt = \"\";
var str = \"\";
var chars = ppcDF.length;
for (var i = 0; i < chars; ++i) {
  crt = ppcDF.charAt(i);
  switch (crt) {
  case \"M\": str += ppcMN[month]; break;
  case \"m\": str += (month<9) ? (\"0\"+(++month)) : ++month; break;
  case \"Y\": str += year; break;
  case \"y\": str += year.substring(2); break;
  case \"d\": str += ((ppcDF.indexOf(\"m\")!=-1)&&(date<10)) ? (\"0\"+date) : date; break;
  case \"W\": str += ppcWN[day]; break;
    default: str += crt;}}
return unescape(str);}

---------------------------

Håber der er en som kan hjælpe og nu mens du er igang så kunne jeg godt tænke mig at vide hvorfor der i dato popup feltet står Su, Mo, Tu, etc hvis man ændre navn på måned og dato i filen?

/StufdBear
Avatar billede ahv Nybegynder
21. januar 2002 - 11:22 #1
Uden at vide det, men i den nederste del står der :

while (i < 13) {

Hvad sker der hvis du retter 13 til 24 ?
Avatar billede stufdbear Nybegynder
21. januar 2002 - 11:32 #2
heh... det var også det første jeg prøvede, det er ik så nemt =)
Avatar billede stufdbear Nybegynder
21. januar 2002 - 13:17 #3
også hvis i kunne svare på hvordan man får den til at vise andet end dags dato, jeg har nemlig to felter hvor der skal indtastes en dato, den ene er dags dato og den anden er 1 måned før
Avatar billede stufdbear Nybegynder
25. september 2003 - 13:32 #4
lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester