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 tema
Cloud & AI
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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