webForumDet fria alternativet

Vecka --> datum

JavaScript

24 svar · 553 visningar · startad av Asa

Medlem sedan dec. 20011 860 inlägg
Frågan#1

Finns det nåt javascript som listar alla veckor i en seletclista och när man väljer en vecka så visar selectruta 2 datumen just den veckan.

Kan detta fixas?

Medlem sedan aug. 20039 340 inlägg
#2

En bra sida med färdiga skript heter dynamicdrive.com. Där finns det en lista med skript kallad Klockor och kalendrar.
Denna kanske passar dig? http://www.dynamicdrive.com/dynamicindex6/dcalendar2.htm
Jag orkade inte skriva ihop nån kod själv så...

Medlem sedan dec. 20011 860 inlägg
#3

Okej, ska kolla lite där.

Medlem sedan dec. 20011 860 inlägg
#4

Men det verkade dock inte finnas det jag söker. Kan ej bygga om den kalendern t.ex så den blir som jag vill ha.

Nån som har tid och kan hjälpa mig?

Medlem sedan dec. 20011 860 inlägg
#5

Finns nån sådan funktion över huvudettaget?

Medlem sedan juni 200291 inlägg
#6

http://www.vecka.nu/

Kanske kan hjälpa dig....

//Fraggel

Medlem sedan dec. 20011 860 inlägg
#7

Jag vill lista alla veckor i en selectruta..... Sen när jag valt en vecka ska det i selectrutan nr 2 visas datumen den veckan.. Förstår ni inte? Utan att sidan laddas om.

Jag vet att det går å fixa me asp att sidan laddas om men vill gärna ha utan.

Medlem sedan juni 20004 308 inlägg
#8
<form name="myform">
<select name="week" onChange="updateDates(this.form);"></select>
<select name="dates"></select>
</form>

<script type="text/javascript">
Date.prototype.getWeek=function(){
	var nywd=(new Date(this.getFullYear(),0,1).getDay()==0)?7:new Date(this.getFullYear(),0,1).getDay();
	var w=Math.ceil((this.getTime()+nywd*86400000-new Date(this.getFullYear(),0,1).getTime())/(604800000))
	if(nywd>4){w--;}
	if(w==0){ return new Date(this.getFullYear()-1,11,31).getWeek()}
	if(w==53 && new Date(this.getFullYear()+1,0,1).getDay()<=4){w=1}
	return w
}
var thisWeek=new Date().getWeek();
var weekdays=["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"];
var i=0; var datesInWeek=new Array(); datesInWeek[0]=new Array();
document.myform.week[document.myform.week.length]=new Option(new Date().getWeek(),new Date().getWeek());
for(var n=0;new Date(new Date().getTime()+n*86400000).getFullYear()==new Date().getFullYear();n++){
	var d=new Date(new Date().getTime()+n*86400000);
	datesInWeek[i][datesInWeek[i].length]=d;
	if(d.getWeek()!=thisWeek){
		document.myform.week[document.myform.week.length]=new Option(d.getWeek(),d.getWeek());
		i++;
		datesInWeek[i]=new Array();
	}
	thisWeek=d.getWeek();
}
function updateDates(obj){
	obj.dates.length=0;
	for(var n=0;n<datesInWeek[obj.week.selectedIndex].length;n++){
		var d=datesInWeek[obj.week.selectedIndex][n];
		obj.dates[n]=new Option(weekdays[d.getDay()]+" "+d.getDate()+"/"+(d.getMonth()+1),weekdays[d.getDay()]+" "+d.getDate()+"/"+(d.getMonth()+1));
	}
}
updateDates(document.myform);
</script>
Medlem sedan dec. 20011 860 inlägg
#9

Supermycket tack Jojoxx. Precis det jag ville ha. Hur kompartibel är denna kod då? Funkar i de flesta webbläsare?

Medlem sedan juni 20004 308 inlägg
#10

Det är rättså kompatibelt skulle jag tro. Funkar i IE (5 och senare skulle jag tro), Mozilla och Opera (senare versioner, vet inte exakt från vilken)

Medlem sedan dec. 20011 860 inlägg
#11

Så bra! Tackar för dina svar :)

Medlem sedan dec. 20011 860 inlägg
#12

Men jag har lagt in den koden jag fick av Jojoxx men när jag försöker lägga till värderna i en databas med asp så finns inga värden. Varför?

Jag hämtar de med dessa 2.
Request.Form("week")
Request.Form("dates") - formatet 2003-10-08 vore bra i värdet om det går att få olika

Medlem sedan juni 20004 308 inlägg
#13

Använder du method="post" i formuläret? Annars ska det funka såvida det inte är något annat slarvfel på sidan, typ oavslutade formulät etc.

Medlem sedan juni 20004 308 inlägg
#14
function updateDates(obj){
	obj.dates.length=0;
	for(var n=0;n<datesInWeek[obj.week.selectedIndex].length;n++){
		var d=datesInWeek[obj.week.selectedIndex][n];
		var dm=d.getMonth()+1; dm=(dm<10)?"0"+dm:dm;
		var dd=(d.getDate()<10)?"0"+d.getDate():d.getDate();
		obj.dates[n]=new Option(weekdays[d.getDay()]+" "+d.getDate()+"/"+(d.getMonth()+1),d.getFullYear()+"-"+dm+"-"+dd);
	}
}

Ger "2003-10-08"

Medlem sedan dec. 20011 860 inlägg
#15

Jag hade visst denna kodsnutt med i form enctype="multipart/form-data" å självklart funkade det ej då.Tackar för din hjälp igen!

Medlem sedan dec. 20011 860 inlägg
#16

En sista grej! Vill bara visa veckorna från veckan som är nu och framåt. Hur ändrar man då i koden?

Medlem sedan juni 20004 308 inlägg
#17

Då slopar vi variabeln year.

<form name="myform">
<select name="week" onChange="updateDates(this.form);"></select>
<select name="dates"></select>
</form>

<script type="text/javascript">
Date.prototype.getWeek=function(){
	var nywd=(new Date(this.getFullYear(),0,1).getDay()==0)?7:new Date(this.getFullYear(),0,1).getDay();
	var w=Math.ceil((this.getTime()+nywd*86400000-new Date(this.getFullYear(),0,1).getTime())/(604800000))
	if(nywd>4){w--;}
	if(w==0){ return new Date(this.getFullYear()-1,11,31).getWeek()}
	if(w==53 && new Date(this.getFullYear()+1,0,1).getDay()<=4){w=1}
	return w
}
var thisWeek=new Date().getWeek();
var weekdays=["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"];
var i=0; var datesInWeek=new Array(); datesInWeek[0]=new Array();
document.myform.week[document.myform.week.length]=new Option(new Date().getWeek(),new Date().getWeek());
for(var n=0;new Date(new Date().getTime()+n*86400000).getFullYear()==new Date().getFullYear();n++){
	var d=new Date(new Date().getTime()+n*86400000);
	datesInWeek[i][datesInWeek[i].length]=d;
	if(d.getWeek()!=thisWeek){
		document.myform.week[document.myform.week.length]=new Option(d.getWeek(),d.getWeek());
		i++;
		datesInWeek[i]=new Array();
	}
	thisWeek=d.getWeek();
}
function updateDates(obj){
	obj.dates.length=0;
	for(var n=0;n<datesInWeek[obj.week.selectedIndex].length;n++){
		var d=datesInWeek[obj.week.selectedIndex][n];
		var dm=d.getMonth()+1; dm=(dm<10)?"0"+dm:dm;
		var dd=(d.getDate()<10)?"0"+d.getDate():d.getDate();
		obj.dates[n]=new Option(weekdays[d.getDay()]+" "+d.getDate()+"/"+(d.getMonth()+1),d.getFullYear()+"-"+dm+"-"+dd);
	}
}
updateDates(document.myform);
</script>
Medlem sedan dec. 20011 860 inlägg
#18

Okej! Men fortsätter denna kod år 2004 att visa så man kan välja likadant? Förstår du min fråga?

Näää, såg 2003 i koden. Hmm, äre bara å ändra till 2004 då?

Varför börjar en vecka med Söndag? Vill ha så den börjar med Måndag. Går det å fixa lätt?

Medlem sedan dec. 20011 860 inlägg
#19

Jag kolla lite i ett annat script och kom fram till detta efter ett tag. Att antingen ha måndag eller söndag som start. Vet dock ej om det är så bra men det verkar funkar.

<script type="text/javascript">
var startAt = 1	    // 0 - sunday ; 1 - monday

Date.prototype.getWeek=function(){
	var nywd=(new Date(this.getFullYear(),0,1).getDay()-startAt==0)?7:new Date(this.getFullYear(),0,1).getDay()-startAt;
	var w=Math.ceil((this.getTime()+nywd*86400000-new Date(this.getFullYear(),0,1).getTime())/(604800000))
	if(nywd>4){w--;}
	if(w==0){ return new Date(this.getFullYear()-1,11,31).getWeek()}
	if(w==53 && new Date(this.getFullYear()+1,0,1).getDay()-startAt<=4){w=1}
	return w
}
var thisWeek=null;
if (startAt==0)	{
  var weekdays=["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"];
}else{
  var weekdays=["Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag","Söndag"];
}
var i=-1; var datesInWeek=new Array(); datesInWeek[1]=new Array();
for(var n=0;new Date(new Date().getTime()+n*86400000).getFullYear()==2003;n++){
	var d=new Date(new Date().getTime()+n*86400000);
	if(d.getWeek()!=thisWeek){
		document.myform.week[document.myform.week.length]=new Option(d.getWeek(),d.getWeek());
		i++;
		datesInWeek[i]=new Array();
	}
	thisWeek=d.getWeek();
	datesInWeek[i][datesInWeek[i].length]=d;
}
function updateDates(obj){
	obj.dates.length=0;
	for(var n=0;n<datesInWeek[obj.week.selectedIndex].length;n++){
		var d=datesInWeek[obj.week.selectedIndex][n];
		var dm=d.getMonth()+1; dm=(dm<10)?"0"+dm:dm;
		var dd=(d.getDate()<10)?"0"+d.getDate():d.getDate();
		obj.dates[n]=new Option(weekdays[(d.getDay()-startAt==-1)?6:(d.getDay()-startAt)]+" "+d.getDate()+"/"+(d.getMonth()+1),d.getFullYear()+"-"+dm+"-"+dd);
	}
}
updateDates(document.myform);
</script>
Medlem sedan juni 20004 308 inlägg
#20

Missade 2003 på ett ställe. Nu visar den alltid aktuellt år, du behöver inte ange det. (plus en liten bugfix för söndag :))

<form name="myform">
<select name="week" onChange="updateDates(this.form);"></select>
<select name="dates"></select>
</form>

<script type="text/javascript">
Date.prototype.getWeek=function(){
	var nywd=(new Date(this.getFullYear(),0,1).getDay()==0)?7:new Date(this.getFullYear(),0,1).getDay();
	var w=Math.ceil((this.getTime()+nywd*86400000-new Date(this.getFullYear(),0,1).getTime())/(604800000))
	if(nywd>4){w--;}
	if(w==0){ return new Date(this.getFullYear()-1,11,31).getWeek()}
	if(w==53 && new Date(this.getFullYear()+1,0,1).getDay()<=4){w=1}
	return w
}
var thisWeek=new Date().getWeek();
var weekdays=["Söndag","Måndag","Tisdag","Onsdag","Torsdag","Fredag","Lördag"];
var i=0; var datesInWeek=new Array(); datesInWeek[0]=new Array();
document.myform.week[document.myform.week.length]=new Option(new Date().getWeek(),new Date().getWeek());
for(var n=0;new Date(new Date().getTime()+n*86400000).getFullYear()==new Date().getFullYear();n++){
	var d=new Date(new Date().getTime()+n*86400000);
	datesInWeek[i][datesInWeek[i].length]=d;
	if(d.getWeek()!=thisWeek){
		document.myform.week[document.myform.week.length]=new Option(d.getWeek(),d.getWeek());
		i++;
		datesInWeek[i]=new Array();
	}
	thisWeek=d.getWeek();
}
function updateDates(obj){
	obj.dates.length=0;
	for(var n=0;n<datesInWeek[obj.week.selectedIndex].length;n++){
		var d=datesInWeek[obj.week.selectedIndex][n];
		var dm=d.getMonth()+1; dm=(dm<10)?"0"+dm:dm;
		var dd=(d.getDate()<10)?"0"+d.getDate():d.getDate();
		obj.dates[n]=new Option(weekdays[d.getDay()]+" "+d.getDate()+"/"+(d.getMonth()+1),d.getFullYear()+"-"+dm+"-"+dd);
	}
}
updateDates(document.myform);
</script>
264 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)