Slettet bruger
28. november 2008 - 10:15
Der er
4 kommentarer og
1 løsning
Læg x måneder til en dato
Hej,
Jeg har forsøgt at lave et java script, som skal hente en dato, fra et input felt og så lægge 1, 2, 3, 6 eller 12 måneder til og så udskrive den nye dato i et andet felt.
28. november 2008 - 22:03
#1
<ole>
Det er som regel en skidt idé at lade en bruger skrive en dato. Lad i stedet brugeren vælge fra dropdowns, så der altid er styr på formatet:
<script type="text/javascript">
var aYearSpan = [1950, 2008, 1988];
var nPlusMonths = 3;
var aMonth = ["jan", "feb", "mar", "apr", "maj", "jun", "jul", "aug", "sep", "okt", "nov", "dec"];
var oSelDay = oSelMonth = oSelYear = null;
function fillTimeSelects() {
var o, n, oFrag = document.createDocumentFragment();
for (var i=1; i<=31; i++) {
n = i<10 ? "0"+i : i;
o = document.createElement("option");
o.setAttribute("value", n);
o.appendChild(document.createTextNode(i));
oFrag.appendChild(o);
}
oSelDay.replaceChild(oFrag, oSelDay.firstChild);
for (var i=0; i<12; i++) {
o = document.createElement("option");
o.appendChild(document.createTextNode(aMonth[i]));
n = i<10 ? "0"+i : i;
o.setAttribute("value", n);
oFrag.appendChild(o);
}
oSelMonth.replaceChild(oFrag, oSelMonth.firstChild);
for (var i=aYearSpan[0],j=aYearSpan[1]; i<=j; i++) {
o = document.createElement("option");
o.setAttribute("value", i);
o.appendChild(document.createTextNode(i));
if (i==aYearSpan[2]) o.setAttribute("selected", "selected");
oFrag.appendChild(o);
}
oSelYear.replaceChild(oFrag, oSelYear.firstChild);
}
function setNewTime() {
var oDate = new Date(oSelYear.value, Number(oSelMonth.value)+nPlusMonths, oSelDay.value);
document.getElementById("result").value = oDate.getDate()+". "+aMonth[oDate.getMonth()]+" - "+oDate.getFullYear();
}
window.onload = function() {
oSelDay = document.getElementById("selDay");
oSelMonth = document.getElementById("selMonth");
oSelYear = document.getElementById("selYear");
fillTimeSelects();
}
</script>
<select id="selDay" style="width:40px"><option></option></select> . <select id="selMonth" style="width:50px"><option></option></select> - <select id="selYear" style="width:60px"><option>2008</option></select>
<p><input id="result" type="text"> <button onclick="setNewTime()">TEST</button></p>
/mvh
</bole>
28. november 2008 - 22:07
#2
Ups! Den sidste selects 'medfødte' option kan ligeså godt være tom. Jeg testede bare bredden med '2008' =)
var aYearSpan = [1950, 2008, 1988];
- giver en select, der begynder med 1950 og slutter med 2008 - og med 1988 valgt. Vælg selv et år, du forventer, brugeren skal vælge i nærheden af.
var nPlusMonths = 3;
- er antallet af måneder, der skal lægges til den valgte dato