Alternativt kunne jeg tænke mig en kalender, hvor man klikker på datoen i
rette måned.
Findes der 'færdige' moduler eller lignende til det?
Mvh Kurt
On Sat, 12 Feb 2011 14:51:51 +0100, "Kurt G" <kur...@guldbaek.net>
wrote:
>Jeg vil gerne have det sådan, at den højeste dato afhænger af, hvilken
>måned, man har valgt!
>Det kan man, så vidt jeg ved, ikke med hverken ASP eller PHP, men kan det
>ikke klares med JS?
Det kan du let med alle tre. Uddrag månedens nummer (0-11) sammenlign
med et array du har lavet over dem der har 31 dage. Findes det ikke
der er der 30 dage medmindre det er Februar (1). For februar skal du
så lige regne på om det er skudår for at afgøre om der er 28 eller 29
dage i måneden. Husk også at hele århundreder ikke er skudår med
mindre de er delelige med 400. Dette kan du formentlig ignorere da det
ikke er videre sandsynligt at din side stadig findes om 89år.
>Alternativt kunne jeg tænke mig en kalender, hvor man klikker på datoen i
>rette måned.
>Findes der 'færdige' moduler eller lignende til det?
Ja. i alle tilfælde. Søg på Google efter Date picker ASP, JS eller
PHP.
Mvh Kurt
Hvis du vælger februar i dit link, kan du stadig vælge 31...
Så der foretages ingen check eller justeringer.
Man kan gøre det med JS, da det er en form. Hvis inkorporeret i en
side, hvor eksisterende aftaler allerede vises, kan man bruge AJAX.
Birger
--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk
<select onchange="JSfunktion(...)">
Tak for tip!
Jeg skal vist til at l�se noget p� det der JS.
Mvh Kurt
<script type="text/javascript">
function isLeapYear(Year){
if (((Year % 4)==0) && ((Year % 100)!=0) || ((Year % 400)==0)) {
return (true);
}
else {
return (false);
}
}
function Dage(md, Year){
return [31,(isLeapYear(Year) ? 29:28),31,30,31,30,31,31,30,31,30,31][md];
}
function JusterDage(md){
// http://www.javascriptkit.com/jsref/select.shtml
var daglisteelm = document.getElementById("dato");
var aarvalue = document.getElementById("Aar").value;
var dage = Dage(md-1, aarvalue);
//
http://www.satya-weblog.com/2008/08/javascript-remove-delete-select-option.html
// sletter nuv�erende liste
var lng = daglisteelm.options.length;
for(i=lng; i>=0; i--){
daglisteelm.remove(i);
}
// opretter listen med de nye v�rdier
for(i=1;i<=dage;i++){
daglisteelm.options[daglisteelm.length]=new Option(i, i);
}
}
</script>
<select size="1" name="maaned" onchange="JusterDage(this.value)">
demo http://olsensweb.dk/test/ng/selectboxdag.htm
--
Med Venlig Hilsen
Ronny Olsen
web: http://olsensweb.dk
AJAX var nu mest tænkt som en muliged, hvis man ønsker eksisterende
afaler vist for en given måned - så man ikke taster en ny aftale på
samme dag en anden allerede eksisterer.
Hvis det er ligegyldigt, er der ingen grund til at bruge AJAX.
Ovnestående der fint nok ud.
Dog skal man lige være opmærksom på, at det vil udføre op til 62
gentegninger af skærmen - en for hver gang der fjernes/indsættes en
option. Afhængigt af hvad der er på skærmen, er det måske ikke
hensigtsmæssigt.
Man undgår det, ved at definere et document-fragment, som man arbejder
på, og indsætter når arbejdet er udført. Det vil kun give een
gentegning, og være hurtigere.
Det kan jeg ikke lige gennemskue på en studs!
Jeg vil se nærmere på det og vender nok tilbage!
Mvh Kurt
Tak for demoen, der kan jeg se, hvordan man f�r det strikket sammen.
Men jeg har lige pr�vet demoen, og den siger, at der er 28 dage i februar
2012!
Min lommekalender er ikke ening med den!
Det ligger nok 'i en lille ting'.
Mvh Kurt
Hej Kurt,
der er IKKE ændret noget ennu, tænker lidt over det som Birger skrev her
19:49. (har ikke "leget" med document-fragment før)
mit bedste bud på fejlen er: du har valgt måned først og derefter år.
som det er nu SKAL man vælge år først og derefter måned, da jeg ikke har
sat nogle event på år
Hej Birger,
har du nogle ide om hvorfor dette kun virker F�RSTE gang ??
som om siden er caschet
function JusterDage(md){
var fragment = document.createDocumentFragment();
var daglisteelm = document.getElementById("dato");
var aarvalue = document.getElementById("Aar").value;
var dage = Dage(md-1, aarvalue);
// virker kun f�rste gang :(
var select = document.createElement('select');
for( var i = 1; i <= dage; i++ ) {
var option = document.createElement('option');
option.setAttribute("value",i);
var text = document.createTextNode(i);
option.appendChild(text);
select.appendChild(option);
}
fragment.appendChild(select);
daglisteelm.parentNode.replaceChild(fragment, daglisteelm);
}
jeg har ikke sat meta tags, kunne det v�re �rsagen ??
meta skal vist ikke have indflydelse på scripts. Men det er en god ide
at sætte en mets der definerer default script.
Tror umiddelbart - uden at have nærlæst - problemet er, at du ikke
sætter id for den nye select.
Ved andet gennemløb, får du enten en fejl eller aglisteelm er null. Så
fejler din indsættelse sidst.
Hvis du nu lader js-funktionen selv læse måneden fra elementet, som den
gør året, kan både måned og år bruge samme onchange....
demo opdateret