Ik heb ergens een date-selector-script gevonden (auteur helaas niet vermeld), dat bijna perfect is voor mijn doel. Het geeft de weekdag, dag, maand en jaar. Default staat dit op de dag van vandaag. Door de datum te wijzigen, wijzigt de weekdag mee. Het script houdt rekening met het aantal dagen per maand, en zelfs met schrikkeljaren. Nu wil ik dit script in een formulier zetten, waarbij het een verplicht veld moet worden. Alle variabelen (weekdag, dag, maand, jaar) zijn echter aparte velden, dus dat is probleem 1. (Want als ze er 1 wijzigen, is dat vaak al voldoende keuze.) Daarnaast weet ik niet hoe het script kan zien dat er een keuze gemaakt is (normaal doe ik dat met Kies... of zo als default waarde). Graag zou ik het script zodanig wijzigen dat dag en maand de defaultwaarde Kies krijgen (jaar blijft staan op huidige jaar en weekdag is blank), en er bij een wijziging van maand en datum er automatisch een weekdag getoond wordt. Het moet verplicht zijn om 'kies' te veranderen. Het zou helemaal mooi zijn als je de huidige datum niet kunt kiezen. Ik heb zelf al uren lopen proberen, maar heb te weinig kennis van javascript om dit voor elkaar te krijgen.
Ik kan me voorstellen dat dit nogal een ingewikkelde wijziging is. Als tweede beste optie zou ik het veld niet verplicht maken, maar het script wel default de datum van morgen willen laten tonen. Die wijziging is wellicht simpeler. (Maar ook dat krijg ik niet voor elkaar.)
Alle input is welkom! (Bij voorbaat dank)
Hier is de code:
Ik kan me voorstellen dat dit nogal een ingewikkelde wijziging is. Als tweede beste optie zou ik het veld niet verplicht maken, maar het script wel default de datum van morgen willen laten tonen. Die wijziging is wellicht simpeler. (Maar ook dat krijg ik niet voor elkaar.)
Alle input is welkom! (Bij voorbaat dank)
Hier is de code:
Code:
<script language="JavaScript1.1">
<!--
var min_year = 2007;
var max_year = 2009;
var weekday_showing = true;
var dayofweek_returned_as_number = false;
var month_returned_as_number = false;
if (min_year <= 400)
alert(".");
function changeDays(numb,date_form) {
mth = date_form.month.selectedIndex;
sel = date_form.year.selectedIndex;
yr = date_form.year.options[sel].text;
if (numb != 1) {
numDays = numDaysIn(mth,yr);
date_form.day.options.length = numDays;
for (i=27;i<numDays;i++) {
date_form.day.options[i].text = i+1;
}
}
day = date_form.day.selectedIndex+1;
if (weekday_showing)
date_form.dayofweek.selectedIndex = getWeekDay(mth,day,yr);
}
function numDaysIn(mth,yr) {
if (mth==3 || mth==5 || mth==8 || mth==10) return 30;
else if ((mth==1) && leapYear(yr)) return 29;
else if (mth==1) return 28;
else return 31;
}
function leapYear(yr) {
if (((yr % 4 == 0) && yr % 100 != 0) || yr % 400 == 0)
return true;
else
return false;
}
function arr() {
this.length=arr.arguments.length;
for (n=0;n<arr.arguments.length;n++) {
this[n] = arr.arguments[n];
}
}
weekdays = new arr("Zondag","Maandag","Dinsdag","Gesloten!",
"Donderdag","Vrijdag","Zaterdag");
months = new arr("Januari","Februari","Maart","April","Mei",
"Juni","Juli","Augustus","September","Oktober","November","December");
var cur = new Date();
function getWeekDay(mth,day,yr) {
first_day = firstDayOfYear(yr);
for (num=0;num<mth;num++) {
first_day += numDaysIn(num,yr);
}
first_day += day-1;
return first_day%7;
}
function firstDayOfYear(yr) {
diff = yr - 401;
return parseInt((1 + diff + (diff / 4) - (diff / 100) + (diff / 400)) % 7);
}
function getFullYear(d) { // d is af date object
yr = d.getYear();
if (yr < 1000)
yr+=1900;
return yr;
}
if (weekday_showing) {
document.write("<select name=weekdag size=1>");
for (i=0;i<7;i++)
document.write("<option"+(dayofweek_returned_as_number?" value="+i:"")
+(cur.getDay()==i?" selected":"")+">"+weekdays[i]+"\n");
document.write("</select>");
}
document.write("<select name=maand "
+ "onChange='changeDays(0,this.form)' size=1>");
for (i=0;i<12;i++)
document.write("<option"+(month_returned_as_number?" value="+i:"")
+(cur.getMonth()==i?" selected":"")+">"+months[i]+"\n");
document.write("</select><select name=dag size=1 "
+ "onChange='changeDays(1,this.form)'>\n");
for (i=1;i<=numDaysIn(cur.getMonth(),getFullYear(cur));i++)
document.write("<option"+(cur.getDate()==i?" selected":"")+">"+i+"\n");
document.write("</select><select name=jaar "
+ "onChange='changeDays(0,this.form)' size=1>\n");
for (i=min_year;i<max_year;i++)
document.write("<option"+(getFullYear(cur)==i?" selected":"")+">"+i+"\n");
document.write("</select>");
// -->
</script>