01. juni 2007 - 01:39
Der er
20 kommentarer og 1 løsning
dato funktion
Hej Jeg har fundet understående script her på eksperten og vil gerne have det udvidet til kun at vise de måneder som er tilbage af i år - sådan at man ikke kan vælge en måned der er passeret, men jeg aner Dyt og Nul om Javascript så håber at nogle kan vise mig hvad jeg skal gøre: <script type="text/JavaScript"> function setSel(f) { var leap, num, dayNum = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (f.year.value>-1 && f.month.value>-1) { if (f.month.value==1) { leap = (f.month.value==1 && new Date(f.year.value, f.month.value, 29).getMonth()==f.month.value) num = (leap)? 29 : 28; } else num = dayNum[f.month.value]; f.day.disabled = false; f.day.options.length = 1; for (i=1; i<num+1; i++) { f.day.options[i] = new Option(i,i); } } else f.day.disabled = true; } </script> <select name="year" onchange="setSel(this.form)"> <option value="-1">År</option> <?php $date_now = getdate(); $year_now = date("Y", $date_now[0]); $i=$year_now; while($i < $year_now+7){ ?> <option value="<? echo $i; ?>"><? echo $i; ?></option> <? $i++; } ?> </select> <select name="month" onchange="setSel(this.form)" > <option value="-1">Mån</option> <option value="0">Jan</option> <option value="1">Feb</option> <option value="2">Mar</option> <option value="3">Apr</option> <option value="4">Maj</option> <option value="5">Jun</option> <option value="6">Jul</option> <option value="7">Aug</option> <option value="8">Sep</option> <option value="9">Okt</option> <option value="10">Nov</option> <option value="11">Dec</option> </select> <select name="day" disabled> <option value="-1">Dag</option> </select>
Annonceindlæg fra Barco
Er jeres mødelokaler sikre nok?
Den moderne arbejdsplads er i stigende grad afhængig af mødelokaler til at fremme samarbejde, men dette skift medfører også stigende sikkerhedsudfordringer.
hvis man vælger næste år (2008) skal alle måneder selvfølelig være tilgængelige...
F.eks. <script type="text/JavaScript"> function setSel(sel) { if(sel.name == "year")showActMonths(); f = sel.form; var leap, num, dayNum = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (f.year.value>-1 && f.month.value>-1) { if (f.month.value==1) { leap = (f.month.value==1 && new Date(f.year.value, f.month.value, 29).getMonth()==f.month.value) num = (leap)? 29 : 28; } else num = dayNum[f.month.value]; f.day.disabled = false; f.day.options.length = 1; for (i=1,im=num+1; im>i; i++) { f.day.options[i] = new Option(i,i); } } else f.day.disabled = true; } var months = ["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"] function showActMonths(){ var f = document.forms[0], today=new Date(), monthSel = f.month; monthSel.length = 1; var showMonths = f.year.value > today.getFullYear() ? 0 : today.getMonth(); for(i=showMonths,im=12;im>i;i++){ monthSel.options[monthSel.length] = new Option(months[i],monthSel.length+showMonths-1); } } window.onload = function(){showActMonths();}; </script> <form> <select name="year" onchange="setSel(this)"> <option value="-1">År</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> </select> <select name="month" onchange="setSel(this)" > <option value="-1">Mån</option> </select> <select name="day" disabled> <option value="-1">Dag</option> </select> </form>
jepper tak det virkede - kan jeg spørge om en ting mere... De tre felter skal sættes sammen og lægges i et fjerde felt som er hidden - hvordan gør jeg det?
Og smid venligst et svar så jeg kan tildele point.
... <select name="day" disabled onchange="this.form.actDate.value=this.value+this.form.month.value+this.form.year.value;"> <option value="-1">Dag</option> </select> <input type="hidden" name="actDate"> </form> -- her har jeg bare sat den til ddmmåååå, det kan du selvfølgelig bare lave om !-) Velbekomme '-)
Hrm, der skal vist lige sættes tegn ind, s det kan blive et fornuftigt format, for en-cifrede dage og måneder er jo mulige med den måde værdier sættes, så: <select name="day" disabled onchange="this.form.actDate.value=this.value+"-"+this.form.month.value+"-"+this.form.year.value;"> -- så formatet bliver d-m-åååå
Den siger der er en syntaksfejl?? <select name="day" disabled onchange="this.form.MyArrival.value=this.value+"-"+this.form.month.value+"-"+this.form.year.value;"> Kan du se hvad der er galt?
du får lige det skjulte felt: <input type="hidden" name="MyArrival" size="8" id="SBlock:MyArrival">
21. juni 2007 - 15:36
#10
<select name="day" disabled onchange="this.form.MyArrival.value=this.value+'-'+this.form.month.value+'-'+this.form.year.value;"> så virker den dobbelt gnyffer ændret til enkelt gnyffer i koden.. Men jeg har et lille problem for den sætter måneden til det valgte -1 altså hvis jeg vælger juli så overføre den juni (vælger 07 overføre 06) kan du hjælpe med den?
22. juni 2007 - 01:55
#11
Ja, javascripts måde at benytte måneder som index i et array, kan sagtens være forvirrende, men så adderer vi bare 1: <select name="day" disabled onchange="this.form.MyArrival.value=this.value+'-'+(this.form.month.value+1)+'-'+this.form.year.value;"> -- og det er helt korrekt at ændre til gnyffer, den overså jeg desværre !-) PS. Det kan også gøres ved at ændre value-tingen på month-selecten, men det er et valg ...
25. juni 2007 - 11:17
#12
Hey roenving Når jeg indsætter ovenstående bliver resultatet: 1-71-2007 - det burde blive 1-8-2007 Jeg kan ikke lige finde ud af at ændre value-tingen på month-selecten, eller forstår ikke lige hvordan det skal gøres
26. juni 2007 - 00:24
#13
Hrm, tekst-tingen og java script: <select name="day" disabled onchange="this.form.MyArrival.value=this.value+'-'+(+this.form.month.value+1)+'-'+this.form.year.value;"> -- et lille plus (der er en unær operator, der konverterer til tal !-)
26. juni 2007 - 00:35
#14
Det prøver jeg lige
26. juni 2007 - 00:45
#15
Jepper - tusind tak for din hjælp!!!
26. juni 2007 - 00:46
#16
Ahhhhhh jeg behøver lige en lille ting mere.. det script jeg sender til vil have formatet ##-##-#### hvordan klare jeg den? Hvis du skal have ekstra point så siger du bare til..1!!!
26. juni 2007 - 01:14
#17
<script type="text/JavaScript"> function setSel(sel) { if(sel.name == "year")showActMonths(); f = sel.form; var leap, num, dayNum = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; if (f.year.value>-1 && f.month.value>-1) { if (f.month.value==1) { leap = (f.month.value==1 && new Date(f.year.value, f.month.value, 29).getMonth()==f.month.value) num = (leap)? 29 : 28; } else num = dayNum[f.month.value]; f.day.disabled = false; f.day.options.length = 1; for (i=1,im=num+1; im>i; i++) { f.day.options[i] = new Option(i,i); } } else f.day.disabled = true; } var months = ["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"] function showActMonths(){ var f = document.forms[0], today=new Date(), monthSel = f.month; monthSel.length = 1; var showMonths = f.year.value > today.getFullYear() ? 0 : today.getMonth(); for(i=showMonths,im=12;im>i;i++){ monthSel.options[monthSel.length] = new Option(months[i],monthSel.length+showMonths-1); } } function twoDigits(num){ return num < 10 ? "0" + num : "" + num; } window.onload = function(){showActMonths();}; </script> <form> <select name="year" onchange="setSel(this)"> <option value="-1">År</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> </select> <select name="month" onchange="setSel(this)" > <option value="-1">Mån</option> </select> <select name="day" disabled onchange="this.form.MyArrival.value=twoDigits(this.value)+'-'+twoDigits(+this.form.month.value+1)+'-'+this.form.year.value;"> <option value="-1">Dag</option> </select> </form> -- tilføjet funktionen til at returnere to cifre hver gang !-)
26. juni 2007 - 13:06
#18
Tak for hjælpen - det virker perfekt
29. juni 2007 - 23:04
#19
og så bare et spørgsmål mere LOOOOL - kan du lave så dagene fungere ligesom månederne altså hvis man vælger den måned vi er i nu så får man kun de dage som er tilbage (inkl. dags dato) ? Og som sagt jeg smider gerne flere point efter dig... synes sq du fortjener mindst 100 mere...
30. juni 2007 - 18:04
#20
Ikke gennemtestet, men så ideen kan ses (vend tilbage, hvis der er fejl, så vi kan rette dem !-) <script type="text/JavaScript"> var dayNum = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]; function setSel(sel) { if(sel.name == "year")showActMonths(); f = sel.form; var leap, num; if (f.year.value>-1 && f.month.value>-1) { if (f.month.value==1) { leap = (f.month.value==1 && new Date(f.year.value, f.month.value, 29).getMonth()==f.month.value) num = (leap)? 29 : 28; } else num = dayNum[f.month.value]; showActDays(f.month.value,num); } else f.day.disabled = true; } var months = ["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"] function showActMonths(){ var f = document.forms[0], today=new Date(), monthSel = f.month; monthSel.length = 1; var showMonths = f.year.value > today.getFullYear() ? 0 : today.getMonth(); for(i=showMonths,im=12;im>i;i++){ monthSel.options[monthSel.length] = new Option(months[i],monthSel.length+showMonths-1); } } function showActDays(m,md,d){ var today = new Date(); switch(showActDays.arguments.length){ case 0: m = today.getMonth(); md = dayNum[m]; d = today.getDate(); break; case 2: md = dayNum[m]; d = today.getMonth() == m ? d = today.getDate() : 1; break; case 1: d = today.getMonth() == m ? d = today.getDate() : 1; break; default: } elm = document.forms[0].day; elm.disabled = false; elm.length = 1; for (i=d,im=md+1; im>i; i++) { elm.options[elm.options.length] = new Option(i,i); } } function twoDigits(num){ return num < 10 ? "0" + num : "" + num; } window.onload = function(){showActMonths();}; </script> <form> <select name="year" onchange="setSel(this)"> <option value="-1">År</option> <option value="2007">2007</option> <option value="2008">2008</option> <option value="2009">2009</option> <option value="2010">2010</option> <option value="2011">2011</option> <option value="2012">2012</option> </select> <select name="month" onchange="setSel(this)" > <option value="-1">Mån</option> </select> <select name="day" disabled onchange="this.form.MyArrival.value=twoDigits(this.value)+'-'+twoDigits(+this.form.month.value+1)+'-'+this.form.year.value;"> <option value="-1">Dag</option> </select><br> Ankomst: <input name="MyArrival" readonly> </form> -- og man kan ikke uddele flere point end 200, så den er allerede fjong !-)
30. juni 2007 - 20:26
#21
Okay får ikke lige teste det næste styk tid, men tak ... og man kan jo altid oprette et nyt spørgsmål og give nogle point... lol - Go' weekend...
Vi tilbyder markedets bedste kurser inden for webudvikling