Jeg har en kalenderfunktion, som er skrevet i Java der bruges til at kode en hjemmeside. Når brugeren trykker indsættes dato fra kalenderen(indkøbsdato af pc) ind i et felt. Men jeg vil gerne have udviklet funktionaliteten til samtidigt at lægge 2 år til datoen, og indsætter det i et andet felt som indeholder garanti udløbsdatoen.
Jeg vil tro, at det er JavaScript han mener.. og så er det val bare at tage dato-feltet, og plusse med 2.. måske skal man konvertere det til Dato-format først..
Ellers skal man vel kigge på de sidste (4?) cifre: 29-6-2005
Jeg regner med at roenving tager over... :-)
Jeg er hoppet ud af dette spm (abonnerer ikke længere på det = ingen mails).. Hvis I har en vigtig besked til mig, skriv en henvisning her: http://www.eksperten.dk/spm/501654
function NewCal(pCtrl,pFormat,pShowTime,pTimeMode) { Cal=new Calendar(dtToday); if ((pShowTime!=null) && (pShowTime)) { Cal.ShowTime=true; if ((pTimeMode!=null) &&((pTimeMode=='12')||(pTimeMode=='24'))) { TimeMode=pTimeMode; } } if (pCtrl!=null) Cal.Ctrl=pCtrl; if (pFormat!=null) Cal.Format=pFormat.toUpperCase();
exDateTime=document.getElementById(pCtrl).value; if (exDateTime!="")//Parse Date String { var Sp1;//Index of Date Separator 1 var Sp2;//Index of Date Separator 2 var tSp1;//Index of Time Separator 1 var tSp1;//Index of Time Separator 2 var strMonth; var strDate; var strYear; var intMonth; var YearPattern; var strHour; var strMinute; var strSecond; //parse month Sp1=exDateTime.indexOf(DateSeparator,0) Sp2=exDateTime.indexOf(DateSeparator,(parseInt(Sp1)+1));
if ((Cal.Format.toUpperCase()=="DDMMYYYY") || (Cal.Format.toUpperCase()=="DDMMMYYYY")) { strMonth=exDateTime.substring(Sp1+1,Sp2); strDate=exDateTime.substring(0,Sp1); } else if ((Cal.Format.toUpperCase()=="MMDDYYYY") || (Cal.Format.toUpperCase()=="MMMDDYYYY")) { strMonth=exDateTime.substring(0,Sp1); strDate=exDateTime.substring(Sp1+1,Sp2); } if (isNaN(strMonth)) intMonth=Cal.GetMonthIndex(strMonth); else intMonth=parseInt(strMonth,10)-1; if ((parseInt(intMonth,10)>=0) && (parseInt(intMonth,10)<12)) Cal.Month=intMonth; //end parse month //parse Date if ((parseInt(strDate,10)<=Cal.GetMonDays()) && (parseInt(strDate,10)>=1)) Cal.Date=strDate; //end parse Date //parse year strYear=exDateTime.substring(Sp2+1,Sp2+5); YearPattern=/^\d{4}$/; if (YearPattern.test(strYear)) Cal.Year=parseInt(strYear,10); //end parse year //parse time if (Cal.ShowTime==true) { tSp1=exDateTime.indexOf(":",0) tSp2=exDateTime.indexOf(":",(parseInt(tSp1)+1)); strHour=exDateTime.substring(tSp1,(tSp1)-2); Cal.SetHour(strHour); strMinute=exDateTime.substring(tSp1+1,tSp2); Cal.SetMinute(strMinute); strSecond=exDateTime.substring(tSp2+1,tSp2+3); Cal.SetSecond(strSecond); } } winCal=window.open("","DateTimePicker","toolbar=0,status=0,menubar=0,fullscreen=no,width=195,height=245,resizable=0,top="+cnTop+",left="+cnLeft); docCal=winCal.document; RenderCal(); }
function GenCell(pValue,pHighLight,pColor)//Generate table cell with value { var PValue; var PCellStr; var vColor; var vHLstr1;//HighLight string var vHlstr2; var vTimeStr;
if (pValue==null) PValue=""; else PValue=pValue;
if (pColor!=null) vColor="bgcolor=\""+pColor+"\""; else vColor=""; if ((pHighLight!=null)&&(pHighLight)) {vHLstr1="color='red'><b>";vHLstr2="</b>";} else {vHLstr1=">";vHLstr2="";}
Nu ved vi, at du har false i time-parameteren, så den kan vi springe over, så du skal sætte en ny funktion ind i en javascript-blok:
function setRunOutDate(dato){ var year = +dato.replace(/^.*?\d{4}$/,"$1") year += 2; var newDate = dato.replace(/^.*?\d{4}$/,""+year); document.getElementById('runOut_date').value = newDate;//ID på det felt, som skal have udløbsdatoen !-) }
function setRunOutDate(dato){ var year = +dato.replace(/^.*?(\d{4})$/,"$1") year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('runOut_date').value = newDate;//ID på det felt, som skal have udløbsdatoen !-) }
function setRunOutDate(dato) { var year = +dato.replace(/^.*?(\d{4})$/,"$1"); year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('runOut_date').value = end_guarentee;//ID på det felt, som skal have udløbsdatoen !-) }
end_guarentee er navnet på den variabel som datoen skal indsættes i.
-- Husk at setRunOutDate skal sættes, så den er tilgængelig i hovedsiden !-)
-- og så misforstod du mig vist med feltnavnet:
function setRunOutDate(dato) { var year = +dato.replace(/^.*?(\d{4})$/,"$1"); year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('end_guarentee').value = newDate;//ID på det felt, som skal have udløbsdatoen !-) }
"-- Husk at setRunOutDate skal sættes, så den er tilgængelig i hovedsiden !-)"
... skrev du. Hvad mener du med det?
Har afprøvet det andet kode og det virker desværre ikke, men det er nok fordi jeg ikke har sat setRunOutDate tilgængeligt for hovedprogrammet som du skriver.
function setRunOutDate(dato) { var year = +dato.replace(/^.*?(\d{4})$/,"$1"); year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('end_guarentee').value = newDate;;//ID på det felt, som skal have udløbsdatoen !-)
} /* original kode vTimeStr=""; PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"java script:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>"; return PCellStr; */ }
/* original kode vTimeStr=""; PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"java script:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>"; return PCellStr; */ }
function setRunOutDate(dato) { var year = +dato.replace(/^.*?(\d{4})$/,"$1"); year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('end_guarentee').value = newDate;;//ID på det felt, som skal have udløbsdatoen !-) }
har gjort den tilgængelig uden for gencell funktionen, men så skal den vil kaldes?
function GenCell(pValue,pHighLight,pColor)//Generate table cell with value { var PValue; var PCellStr; var vColor; var vHLstr1;//HighLight string var vHlstr2; var vTimeStr;
if (pValue==null) PValue=""; else PValue=pValue;
if (pColor!=null) vColor="bgcolor=\""+pColor+"\""; else vColor=""; if ((pHighLight!=null)&&(pHighLight)) {vHLstr1="color='red'><b>";vHLstr2="</b>";} else {vHLstr1=">";vHLstr2="";}
if (Cal.ShowTime) { vTimeStr="winMain.document.getElementById('"+Cal.Ctrl+"').value+=' '+"+"winMain.Cal.getShowHour()"+"+':'+"+"winMain.Cal.Minutes"+"+':'+"+"winMain.Cal.Seconds"; if (TimeMode==12) vTimeStr+="+' '+winMain.Cal.AMorPM"; } else
/* original kode vTimeStr=""; PCellStr="<td "+vColor+" width="+CellWidth+" align='center'><font face='verdana' size='2'"+vHLstr1+"<a href=\"java script:winMain.document.getElementById('"+Cal.Ctrl+"').value='"+Cal.FormatDate(PValue)+"';"+vTimeStr+";window.close();\">"+PValue+"</a>"+vHLstr2+"</font></td>"; return PCellStr; */ }
function setRunOutDate(dato) { var year = +dato.replace(/^.*?(\d{4})$/,"$1"); year += 2; var newDate = dato.replace(/^(.*?)\d{4}$/,"$1"+year); document.getElementById('end_guarentee').value = newDate;;//ID på det felt, som skal have udløbsdatoen !-)
ok. men den virker ikke desværre. Når jeg har trykket på datoen fra kalenderen så bliver datoen indsat men garantidatoen bliver ikke indsat og kalendervinduet lukkes heller ikke.
jeg har kopieret din kode ind og slettet det gamle uden forskel. Har du nogen forslag til udbedring af fejl?
Synes godt om
Ny brugerNybegynder
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.