"weekday" och "v" är lokala variabler så du kan inte komma åt dem, setFullYear's andra parameter förväntar sig ett noll-indexerat värde, inte ett ett-indexerat, och du escapar alla enkla citattecken (' -> \') utanför en sträng vilket är felaktigt. Prova att byta ut var y=datum.substr(0,4); var m=datum.substr(4,2); var d=datum.substr(6,2); mot var y=datum.substr(0,4)-0; var m=datum.substr(4,2)-1; var d=datum.substr(6,2)-0; (så konverteras de även till heltal), lägg till document.getElementById('veckodag_avresa').value=weekday[v.getDay()]; (notera förresten ; -> .) innan return-satsen, och byt ut alla \' mot '. I övrigt kan du förresten ta bort "else" eftersom du redan returnerar något i "if"-delen, och så borde du lägga till lite bättre validering av indata ("abcdefghi" accepteras tex som ett datum). | | Hej igen! Jag har lyckats snickra ihop en datumkoll som fungerar. Efter det har jag försökt att ta fram veckodagen och sätta den i en annan input men inte lyckats helt. Vad gör jag för fel? Funktionen är såhär: Man knackar in ett datum i en input. Sedan ska veckodagen skrivas in automatiskt i en annan readonly input. Här är scriptet: <script type="text/javascript"> function fveckodag_avresa(input) { var datum=input.replace(/-/g,\'\'); if(isNaN(datum)){ //Kollar så att det inte finns bokstäver return \'\'; } if(datum.length<8){ //Kollar om antal tecken är mindre än 8 return \'Skriv enl. ååååmmdd\'; } else { var y=datum.substr(0,4); var m=datum.substr(4,2); var d=datum.substr(6,2); var v = new Date(); v.setFullYear(y,m,d); var weekday=new Array(7); weekday[0]="Söndag"; weekday[1]="Måndag"; weekday[2]="Tisdag"; weekday[3]="Onsdag"; weekday[4]="Torsdag"; weekday[5]="Fredag"; weekday[6]="Lördag"; return y+\'-\'+m+\'-\'+d; } } </script> I datuminputen: onchange="this.value=fveckodag_avresa(this.value);document.getElementById(\'veckodag_avresa\');value=weekday[v.getDay()];" Veckodagsinputen heter veckodag_avresa |
|