---
title: "SELECT JavaScript och PHP"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/121085-select-javascript-och-php"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "westman"
published: "2005-01-26T11:25:42.000Z"
updated: "2006-02-16T21:24:57.000Z"
replies: 10
views: 571
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/121085-select-javascript-och-php"
---

# SELECT JavaScript och PHP

## #1 — westman, 2005-01-26T11:25Z

Jag har en sida med 3st SELECT-boxar: År, Månad, Dag. Antalet dagar en viss månad beräknar jag med php:s date() - inga problem. Problemet ligger i att få antalet valbara dagar att ändras då man byter år och/eller månad (ex. februari vid skottår). Jag har lyckats koda en lösning på detta (med onChange och $\_GET...), men sidan behöver då laddas om och all övrig data (i andra fält) går förlorad... 

Kan någon hjälpa mig med någon lösning som inte kräver "omladdning". 
Är ingen hejare på JS...:OO

Permalänk: https://www.webforum.nu/p/121085

## #2 — westman, 2005-01-26T11:56Z

Hjälp

Detta funkar ju (tar dock inte hänsyn till skottår..)

```
<SCRIPT type="text/JavaScript">

// Antal dagar i månaden

var days = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];

function fillDays(daysObj, month) {
	// Ta bort dagar
	while(daysObj.options[0])
		daysObj.options[0] = null;

	// Lägg till de nya dagarna
	if(month) {
		daysObj.length = days[month-1];
		var i = 0;
		while(i < days[month-1])
			daysObj.options[i] =  new Option(++i);
	} else {
		daysObj.length = 1;
		daysObj.options[0] = new Option("--");
	}
}
</script>
```

Anrop i månad-SELECT:

```
onChange="fillDays(this.form.dag, this.selectedIndex)"
```

Dag-SELECT:

```
<select name="dag">
	<option>--</option>
</select>
```

**Men** nu vill jag att ett visst datum skall vara markerat, "selected" (ibland dagens och ibland ett annnat). Detta datum ligger i $markedDate

Permalänk: https://www.webforum.nu/p/1539687

## #3 — nitro2k01, 2005-01-26T12:10Z

Lösning på skottårsfrågan:

```
 var days = [31, (year%4)?28:29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
```

Permalänk: https://www.webforum.nu/p/1539695

## #4 — westman, 2005-01-26T12:14Z

tackar! kanske du kan hjälpa mig med selected date oxå? :)

Permalänk: https://www.webforum.nu/p/1539698

## #5 — @nders, 2005-01-26T12:21Z

OT: nitros skottårslösning är inte *helt* komplett. Årtal som är jämnt delbart med 100 är *inte* skottår, om det inte samtidigt är jämnt delbart med 400.

Mvh

Permalänk: https://www.webforum.nu/p/1539701

## #6 — nitro2k01, 2005-01-26T12:32Z

Jo jag vet, jag vet, och det är enkelt fixat, men nu var jag bara ute efter att göra enkel och funktionell som kod som fungerar i 395 år framåt.

```
var days = [31, (year%4)?28:((year%100)?29:((year%400)?28:29)), 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
```

Edit...

Permalänk: https://www.webforum.nu/p/1539707

## #7 — westman, 2005-01-26T12:51Z

Just, jag tänkte att applikationen kanske inte ser likadan ut om 400år. 

$markedDate-grejen då? Ingen som har en finurlig lösning

Permalänk: https://www.webforum.nu/p/1539718

## #8 — westman, 2005-01-27T00:22Z

Vore supernice ifall ngn kan hjälpa mig med detta problem..!

Permalänk: https://www.webforum.nu/p/1540036

## #9 — Jojoxx, 2005-01-27T14:58Z

Jag var tvungen att skriva ett litet script för det. Det är skrivet för att kunna spara ner objektet dateSelect i en extern .js-fil om du vill. Datumet som skall markeras anger du som ett date-objekt i dateSelect.date.

Lite overkill, men kan vara bra att ha någon gång kanske. Anm. använder du date-objektet i JS så behöver du inte hålla reda på vad som är skottår eller inte.

```
<script type="text/javascript">
var dateSelect={
	yearFieldName:"year",
	monthFieldName:"month",
	dateFieldName:"date",
	date:new Date(),
	updateDate:function(obj){
		obj[this.dateFieldName].length=0;
		for(var i=1;i<=new Date(obj[this.yearFieldName][obj[this.yearFieldName].selectedIndex].value,obj[this.monthFieldName].selectedIndex+1,0).getDate();i++){
			obj[this.dateFieldName][i-1]=new Option(((i<10)?"0":"")+i,((i<10)?"0":"")+i);
		}
	},
	insertYearList:function(){
		document.write("<select name=\""+this.yearFieldName+"\" onchange=\"dateSelect.updateDate(this.form);\">");
		for(var i=this.date.getFullYear()-10;i<this.date.getFullYear()+10;i++){
			document.write("<option value=\""+i+"\" "+((this.date.getFullYear()==i)?"selected=\"selected\"":"")+">"+i+"</option>");
		}
		document.write("</select>");
	},
	insertMonthList:function(){
		document.write("<select name=\""+this.monthFieldName+"\" onchange=\"dateSelect.updateDate(this.form);\">");
		for(var i=1;i<=12;i++){
			document.write("<option value=\""+((i<10)?"0":"")+i+"\" "+((this.date.getMonth()+1==i)?"selected=\"selected\"":"")+">"+((i<10)?"0":"")+i+"</option>");
		}
		document.write("</select>");
	},
	insertDateList:function(){
		document.write("<select name=\""+this.dateFieldName+"\">");
		for(var i=1;i<=new Date(this.date.getFullYear(),this.date.getMonth()+1,0).getDate();i++){
			document.write("<option value=\""+((i<10)?"0":"")+i+"\" "+((this.date.getDate()==i)?"selected=\"selected\"":"")+">"+((i<10)?"0":"")+i+"</option>");
		}
		document.write("</select>");
	}
}
dateSelect.date=new Date(2005,11,24); // Julafton 
</script>

<form>
<script type="text/javascript">dateSelect.insertYearList();</script>
<script type="text/javascript">dateSelect.insertMonthList();</script>
<script type="text/javascript">dateSelect.insertDateList();</script>
</form>
```

Permalänk: https://www.webforum.nu/p/1540371

## #10 — westman, 2005-01-27T16:41Z

man tackar! lite overkill ja, men rätt ska vara rätt! ;)

Permalänk: https://www.webforum.nu/p/1540404

## #11 — tanten, 2006-02-16T21:24Z

Tar upp en gammal tråd...
Jag håller på med en kalender och den visar bara 26 dagar i februari, 28 dagar på adminsidan oavsett om det är skottår eller inte. Finns det någon som kan kolla om detta är rätt i jsscriptet.

```
function setDays(month,year,objectid){
	var monthdays 	= new Array(31,0,31,30,31,30,31,31,30,31,30,31);
	monthdays[1]	= (year%4 == 0) ? 29 : 28;
	var d 			= document;
	var _id			= d.getElementById(objectid);
	var _tag		= _id.getElementsByTagName('option');
	if(_tag.length != monthdays[month-1]){
		for(a=_tag.length-1;a>-1;a--){
			_tag[a].removeChild(_tag[a].firstChild);
			_id.removeChild(_tag[a]);
		}
for(a=0;a<monthdays[month-1];a++){
			e_option 	= d.createElement('option');
			label		= (a<9) ? '0' + (a+1) : a+1;
			e_label		= d.createTextNode(label);
			_id.appendChild(e_option);
			_tag[a].setAttribute('value',a+1);
			_tag[a].appendChild(e_label);
		}
```

Jag skulle bli väldigt tacksam för hjälp... så jag kan utesluta detta om det är rätt  :)

Permalänk: https://www.webforum.nu/p/1768905

---

Tråden på webben: https://www.webforum.nu/amne/javascript/121085-select-javascript-och-php
