Avatar billede heyn Nybegynder
10. november 2011 - 13:03 Der er 10 kommentarer og
1 løsning

Jeg mangler en god datepicker.

Hej Eksperter

Jeg har brug for en datepicker som fungerer som en popup når man klikker på inputfeltet fødselsdag.
Det er sikkert meget nemt, men jeg kan bare ikke finde den.
Jeg har søgt på google (og eksperten), men dem jeg finder har altid et af 2 problemer.

- Når man går tilbage/frem er det en måned af gangen, og det er jo ikke så godt når det er fødselsdagen man vil indsætte. Så kræver det mange klik at nå tilbage til januar 1965. Man skal altså kunne gå frem/tilbage i både måned og år.
- Man kan ikke gå langt nok tilbage i tiden. Jeg skal kunne gå tilbage til ca. 1906.

Det vil selvfølgelig ikke gøre noget hvis den ser lidt cool ud, men det er ikke afgørende.
Om teksten er engelsk gør intet - Jeg kan jo bare rette i koden.

Man skal kunne rette formatet således at datoformatet der returneres er på formen: dd-mm-åååå.

Som nævnt - sikkert meget nemt hvis man bare kan finde den.

MVH Christian
Avatar billede kalp Novice
10. november 2011 - 13:15 #1
Avatar billede olebole Juniormester
10. november 2011 - 16:15 #2
<ole>

Du kan også vælge en mere simpel metode:


<?php
$optY = array();
$optM = array();
$optD = array();
$months = array('Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec');
for ($i=1900,$j=date('Y'); $i<$j; $i++) $optY[] = '<option value="'.$i.'">'.$i.'</option>';
for ($i=0; $i<12; $i++) $optM[] = '<option value="'.$months[$i].'">'.$months[$i].'</option>';
for ($i=1; $i<32; $i++) $optD[] = '<option value="'.$i.'">'.$i.'</option>';

print '<select name="year">'.implode('',$optY).'</select><select name="month">'.implode('',$optM).'</select><select name="day">'.implode('',$optD).'</select>';
?>


- eller i JavaScript (så downloader du væsentligt mindre kode):


<select name="year"><option></option></select><select name="month"><option></option></select><select name="day"><option></option></select>

<script type="text/javascript">
var selY = document.getElementsByName("year")[0],
selM = document.getElementsByName("month")[0],
selD = document.getElementsByName("day")[0],
months = ['Jan', 'Feb', 'Mar', 'Apr', 'Maj', 'Jun', 'Jul', 'Aug', 'Sep', 'Okt', 'Nov', 'Dec'];

for (var i=1900,j=new Date().getFullYear(),opt; i<j; i++) {
    opt = document.createElement("option");
    opt.setAttribute("value", i);
    opt.appendChild(document.createTextNode(i));
    selY.appendChild(opt);
}
selY.removeChild(selY.firstChild);

for (var i=0,opt; i<12; i++) {
    opt = document.createElement("option");
    opt.setAttribute("value", months[i]);
    opt.appendChild(document.createTextNode(months[i]));
    selM.appendChild(opt);
}
selM.removeChild(selM.firstChild);

for (var i=1,j=32,opt; i<j; i++) {
    opt = document.createElement("option");
    opt.setAttribute("value", i);
    opt.appendChild(document.createTextNode(i));
    selD.appendChild(opt);
}
selD.removeChild(selD.firstChild);
</script>



/mvh
</bole>
Avatar billede heyn Nybegynder
10. november 2011 - 16:30 #3
Olebole:
Duer ikke rigtigt - Man kan skrive 31 februar.
Og det skal være en popup
Avatar billede olebole Juniormester
10. november 2011 - 16:57 #4
Nuvel, det er som sagt en simplere fremgangsmåde  =)

Hvis nogen kunne finde på at vælge 31. februar, er der med garanti også folk, der kan finde på at manipulere outputtet fra en datepicker. Med lidt ekstra kode kan man filtrere dagen efter, hvad der er valgt i år og måned.

Der er heller ikke noget i vejen for at loade scriptet i en popup.

Anyway, så bruger du bare, hvad du synes, passer bedst til dine brugere  *o)
Avatar billede kalp Novice
11. november 2011 - 12:48 #5
Jeg ved ikke hvad du mener med "simple metode".

Med jQuery skal man skrive denne linje:
$("#datepicker").datepicker();

så har man kalender funktionalitet.
Ud over det så ved man det er gennemtestet til forskellige browsere og man får et hav af forskellige opsætningsmuligheder(options) for ikke at tale om events man kan binde til.

Det kan oven i købet styles nemt med deres "Theming".

Dét er i min verden den simple løsning og ikke at skrive standard funktionalitet fra bunden selv:)
Avatar billede olebole Juniormester
11. november 2011 - 13:11 #6
Jeg skriver 'simple metode', fordi jeg naturligvis ikke bruger et library uden at skille det ad og se, hvordan det egentlig arbejder.

jQuery bruger bunker af kræfter på alle mulige fuldstændigt ligegyldige processer, fordi det skal kunne udføre alt muligt på en måde, som koderen opfatter som 'simpelt' (Læs: Ikke behøver lære at kode og/eller slipper så let fra sit arbejde, som muligt).

Der er ingen, der siger, man altid skal skrive al kode fra bunden. Man kan gøre, som programmører altid har gjort: Man kan skrive sine egne hjælpebiblioteker. Det kræver dog, man kan kode.

Jeg har altid haft JS-fejlmeddeleser slået til i IE. I dag er det umuligt, hvis man surfer med IE, fordi man bliver tæppebombet med JS-fejl - som oftest fra den slags libraries. Kodere er simpelthen blevet luddovne - eller er det mon bare fordi, de ikke kan kode?
Avatar billede olebole Juniormester
11. november 2011 - 13:25 #7
Vi har fornylig haft en tråd her på E, hvor en stakkels bruger har brugt dette skod-lib.

Tumpen, der har skrevet skidtet, tager indholdet af en uploaded fil og smider det helt ukritisk ned i en eksekverbar fil (en .php fil) på serveren. Det må vel nærmest betragtes som overlagt servermord!

Der er masser, der bruger omtalte 'manager' uden at ane, hvordan det fungerer - og man skal da også langt ned og kikke i krogene, før man finder katastrofen. Sitet ser præsentabelt ud. og koden virker ved første øjekast rimelig professionel. Det er svært at gennemskue, at 'programmøren' bag laver helt fatale fejl, som enhver begynder ved er rent selvmord.

Det kostede da også omtalte E-bruger hans site. En forlystelsessyg fætter kom forbi og uploadede en PHP-fil med endelsen .jpg - og eksekverede den. Du finder tråden her
Avatar billede heyn Nybegynder
12. november 2011 - 13:01 #8
Hej Begge.

I har begge gode argumenter.

Jeg har dog kikket en del på Datepicker og den ser lovende ud. Det blive den, så smid et svar Kalp.

Olebole, du har ret i at der en del ligegyldig kode, men efter jeg ved en delsøgning fandt udgaver minimeret (al kode komprimeret uden mellemrum) kan jeg se hvad jeg skal bruge og ikke, så jeg kan skære det ligegyldige fra.
Ang. farer ved koden er modulet Datepicker jo ret gennemteste, så man kan nok regne med at de fleste farer er væk, og den er gennemteste på alle platforme nyere en EI 5, Firefox, Chrome ...

Mange tak for hjælpen fra en nybegynder i Jquery.

MVH Christian
Avatar billede olebole Juniormester
12. november 2011 - 17:01 #9
Det er ikke så meget kodemængden, jeg 'bitcher' over, men alle de ofte tunge og helt overflødige processer, der  kører i baggrunden - og som du ikke kan skære fra. Den største fare ved ikke at bruge libraries til alt, er at man risikerer at lære at kode  *o)

Men sådan er vi så forskellige ... den ene vil have moderen, mens den anden vil have datteren  =)
Avatar billede heyn Nybegynder
13. november 2011 - 01:24 #10
Hej mor. Som jeg skrev er jeg datter i JQuery :)

Noget af det første jeg lærte på datamatikerstudie var sætningen:

- Den som vil tjene penge som programmør skal være god til at låne og stjæle :)

Nå - Nu skal en datamatiker jo heldigvis ikke programmere særligt meget.
Avatar billede olebole Juniormester
13. november 2011 - 14:45 #11
Jeg forstår ikke rigtig den første linje - men det kan jo skyldes, du ikke husker så meget af det første, du lærte i folkeskolen(?)  =)

Det er synd, du ikke husker noget fra resten af datamatiker studiet, for du har uden tvivl også lært en masse om at undgå unødig og ineffektiv kode.

Problemet er ikke, at man bruge færdige libraries. Problemerne opstår, når folk bruger dem uden at vide, hvad der foregår bag scenen. Eller når man bruger dem til småbitte ting, som ligeså hurtigt kunne skrives ligeså hurtigt og langt mere effektivt.

Jo mere folk bruger libraries - jo mindre lærer de at kode selve sproget. Jeg gentager i denne forbindelse fra #6: "Jeg har altid haft JS-fejlmeddeleser slået til i IE. I dag er det umuligt, hvis man surfer med IE, fordi man bliver tæppebombet med JS-fejl - som oftest fra den slags libraries. Kodere er simpelthen blevet luddovne - eller er det mon bare fordi, de ikke kan kode?".

Undskyld, men jeg er så gammeldags, at jeg anser dårlig kvalitet og inkompetence som beskæmmende for faget ... men sådan kan man jo opfatte tingene så forskelligt.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester