webForumDet fria alternativet

Vecka --> datum

24 svar · 551 visningar · startad av Asa

AsaMedlem sedan dec. 20011 934 inlägg
#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?

nitro2k01Medlem sedan aug. 20037 630 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å...

AsaMedlem sedan dec. 20011 934 inlägg
#3

Okej, ska kolla lite där.

AsaMedlem sedan dec. 20011 934 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?

AsaMedlem sedan dec. 20011 934 inlägg
#5

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

tosteweMedlem sedan juni 200291 inlägg
#6

http://www.vecka.nu/

Kanske kan hjälpa dig....

//Fraggel

AsaMedlem sedan dec. 20011 934 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.

JojoxxMedlem sedan juni 20004 306 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>
AsaMedlem sedan dec. 20011 934 inlägg
#9

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

JojoxxMedlem sedan juni 20004 306 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)

AsaMedlem sedan dec. 20011 934 inlägg
#11

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

AsaMedlem sedan dec. 20011 934 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

JojoxxMedlem sedan juni 20004 306 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.

JojoxxMedlem sedan juni 20004 306 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"

AsaMedlem sedan dec. 20011 934 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!

AsaMedlem sedan dec. 20011 934 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?

JojoxxMedlem sedan juni 20004 306 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>
AsaMedlem sedan dec. 20011 934 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?

AsaMedlem sedan dec. 20011 934 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>
JojoxxMedlem sedan juni 20004 306 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>
Genererad på 377 ms · cache AV · v20260730165559-full.f96bc7eb