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?
24 svar · 551 visningar · startad av Asa
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å...
Okej, ska kolla lite där.
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?
Finns nån sådan funktion över huvudettaget?
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.
<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>
Supermycket tack Jojoxx. Precis det jag ville ha. Hur kompartibel är denna kod då? Funkar i de flesta webbläsare?
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)
Så bra! Tackar för dina svar :)
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
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.
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"
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!
En sista grej! Vill bara visa veckorna från veckan som är nu och framåt. Hur ändrar man då i koden?
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>
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?
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>
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>