Asa Medlem sedan dec. 2001 1 860 inlägg Frågan 8 okt. 2003 11:57 #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?
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å...
Asa Medlem sedan dec. 2001 1 860 inlägg Okej, ska kolla lite där.
Asa Medlem sedan dec. 2001 1 860 inlägg 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?
Asa Medlem sedan dec. 2001 1 860 inlägg Finns nån sådan funktion över huvudettaget?
T tostewe Medlem sedan juni 2002 91 inlägg http://www.vecka.nu/
Kanske kan hjälpa dig....
//Fraggel
Asa Medlem sedan dec. 2001 1 860 inlägg 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.
J Jojoxx Medlem sedan juni 2000 4 308 inlägg <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>
Asa Medlem sedan dec. 2001 1 860 inlägg Supermycket tack Jojoxx. Precis det jag ville ha. Hur kompartibel är denna kod då? Funkar i de flesta webbläsare?
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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)
Asa Medlem sedan dec. 2001 1 860 inlägg Så bra! Tackar för dina svar :)
Asa Medlem sedan dec. 2001 1 860 inlägg 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
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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.
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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"
Asa Medlem sedan dec. 2001 1 860 inlägg 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!
Asa Medlem sedan dec. 2001 1 860 inlägg En sista grej! Vill bara visa veckorna från veckan som är nu och framåt. Hur ändrar man då i koden?
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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>
Asa Medlem sedan dec. 2001 1 860 inlägg 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?
Asa Medlem sedan dec. 2001 1 860 inlägg 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>
J Jojoxx Medlem sedan juni 2000 4 308 inlägg 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>