Avatar billede roadi Nybegynder
19. marts 2003 - 18:49 Der er 12 kommentarer og
1 løsning

Opdatere et Input felt.

Hej Eksperter!

Kan det lade sig gøre at opdatere et Input felt som er i en form hvis formatet er forkert?

Det er til en kaleder jeg er ved at bygge, og jeg vil gerne ha' dato'en i et specielt format, nemlig DD-MM-YYYY

Så kan man lave et script der ex. oversætter ddmmyy til DD-MM-YYYY og dd.mm.yy til det samme?

/Roadi
Avatar billede olebole Juniormester
19. marts 2003 - 20:09 #1
<ole>

Hvorfor bruger du ikke det rigtige format fra start? Det lugter af en rigtig dårlig løsning

/mvh
</bole>
Avatar billede mortrr Praktikant
19. marts 2003 - 23:05 #2
Det kan man godt.
Men det giver en lille smule arbejde.
Man skal forudse hvad brugeren kan finde på at skrive.
Fx starte med at ændre alle specielle tegn til noget man kender, og derefter behandle det.

Her er et lille script som godt nok har lidt tid på bagen, men det virker da.

Du kan skrive næsten hvad som helst i den. Hvis det er helt ukendt vil den returnere dags dato, ellers går den ud fra at du har skrevet en del af datoen.

<script>
function strPad(iVar,iLng,iChr) {
    iVar=""+iVar;
    if (!iChr || iChr=="") {
        iChr="0";
    }
    while (iVar.length<iLng) {
        iVar=iChr+iVar;
    }
    return iVar;
}

function validateDate(inpDate) {
    iDate=""+inpDate.value;
    if (iDate=="") return true;
    curDate=new Date();
    iDate=iDate.replace(/\D/g,"-");
    iDate=iDate.split("-");
    if (iDate.length==1) {
        if (iDate[0].length>2) {
            iDate[1]=iDate[0].substr(2);
            iDate[0]=iDate[0].substr(0,2);
            if (iDate[1].length>2) {
                iDate[2]=iDate[1].substr(2);
                iDate[1]=iDate[1].substr(0,2);
            }
        }
    }
    iDate[0]=parseInt(iDate[0],10);
    if (isNaN(iDate[0])) iDate[0]=curDate.getDate();
    if (iDate.length<2) {
        iDate[1]=curDate.getMonth()+1;
    } else {
        iDate[1]=parseInt(iDate[1],10);
        if (isNaN(iDate[1])) {
            iDate[1]=curDate.getMonth();
        } else {
            iDate[1]=iDate[1]-1;
        }
    }
    if (iDate.length<3) {
        iDate[2]=curDate.getFullYear();
    } else {
        iDate[2]=parseInt(iDate[2],10);
        if (isNaN(iDate[2])) {
            iDate[2]=curDate.getFullYear();
        } else {
            if (iDate[2]<100) {
                iDate[2]=Math.floor(curDate.getFullYear() / 100)*100 + iDate[2];
            }
        }
    }

    iDate=new Date(iDate[2],iDate[1],iDate[0]);
    iDate=strPad(iDate.getDate(),2,"0")+"-"+strPad(iDate.getMonth()+1,2,"0")+"-"+iDate.getFullYear();

    inpDate.value=iDate;
}
</script>
<p>Dato: <input name="Datoen" value="" onchange="validateDate(this)">
Avatar billede mortrr Praktikant
19. marts 2003 - 23:06 #3
Det burde vel have været en slags svar.
Avatar billede mortrr Praktikant
19. marts 2003 - 23:07 #4
Ole -> Kan du få dine brugere til altid at skrive i samme format?
Det må være skønt.
Avatar billede olebole Juniormester
19. marts 2003 - 23:44 #5
Nej, men det er da heller ikke måden, man løser den slags på ... det ville da være dybt godnat. Man giver dem tre dropdowns  :)
Avatar billede olebole Juniormester
19. marts 2003 - 23:45 #6
Og den løsning, du har lavet er da noget skod - i forhold til at løse det på den rigtige måde fra start ... undskyld udtrykket  :)
Avatar billede olebole Juniormester
19. marts 2003 - 23:50 #7
Man skal jo også passe på, man ikke overskrider serverside-sprogets grænser for tidsregning (årstal i begge ender) ... det kan man med en dropdown. Det kan man aldrig være sikker på med tekst-felter.
Desuden kan du ikke sikre dig mod, en herboende anglosakser skriver måneden først og datoen efter.
Der er mange gode grunde til, professionelt byggede sites aldrig anvender text-inputs til den slags  :)
/mvh
Avatar billede mortrr Praktikant
20. marts 2003 - 00:04 #8
Hvorfor skriver du så ikke det til roadi i stedet for som sædvanlig at komme med et surt og nedværdigende udfald mod en stakkels mand?

Tænk dog en ekstra gang over hvad du skriver.
De smileys du kaster omkring med er falmet meget med tiden.

Personligt har jeg den fejl at jeg burde stoppe lidt tidligere på aftenen, og ikke bare give folk hvad de beder om, uden at tænke over om de nu er på vej i den helt absolut rigtige retning. (så jo - jeg burde også tænke mig om en ekstra gang)

Men jeg håber godt nok aldrig at jeg bliver så nedladende som du har fået for vane på det sidste.

Ja - det lyder hårdt. Men jeg er som sagt blevet træt af din tone på det sidste. Det er nok ikke den store forskel fra din tidligere lette ironi, men det er træls at "høre" på.
Og nej - jeg føler mig ikke truffet/trådt over tæerne.

Jeg er selv en arg modstander at dropdowns til datoer.
Der er ikke noget bedre til at ødelægge et "input-flow".
Prøv at udfylde tre datoer med dropdown kontra et input-felt hvor du mere eller mindre selv kan angive formatet.
(og scriptet vil faktisk lave det om til en "totalt tåbelig" dato, hvis man skriver forkert, så serveren skal nok klare det).
Avatar billede olebole Juniormester
20. marts 2003 - 00:24 #9
At du finder det træls ... tjahhh ... kan du ikke tåle lugten, kunne det være, du selv skulle holde igen med din egen sarkastiske små-fjærten (19/03-2003 23:07:23) og så følge din egen fornemmelse og gå lidt tidligere i seng  :)
Synd i øvrigt, du finder dig selv en stakkel - men det kan jeg ikke gøre noget ved.
At du føler dig trådt over tæerne er jo tydelig for enhver - så det fatter jeg da ikke, du benægter.

Dernæst er der ikke spor nedladende i at kalde en skod-løsning for en skod-løsning ... det er at være ligefrem. At det så ikke er så populært i visse kredse, er en anden ting.

Hvorfor lave store script-løsninger, når nu man kan lave det så nemt for alle parter med drop-downs? Man skal vist være mere end fumlefingret, hvis de er et problem ... forudsat, de er preselected et rimeligt sted i midten, naturligvis.
Serveren klarer jo ikke 'totalt tåbelige' datoer eller datoformater af sig selv  :)
Avatar billede mortrr Praktikant
20. marts 2003 - 00:46 #10
Det var nu ikke mig jeg kaldte en stakkel, men roadi. Jeg har ikke noget imod at du kalder min løsning for en skod-løsning. Jeg er rimeligt hårdhudet. Bare lidt åbenmundet.

Funktionen gør det den skal, og det er jeg (og andre) ganske tilfreds med. Du kunne jo prøve den.

Jeg tror den vigtigeste udvidelse der er lagt på i forhold til den viste, er check af om årstallet er rimeligt, og en advarsel om at brugeren er igang med fx at sætte en deadline 75 år ude i fremtiden.

Hvad er der nemt i drop downs, for brugere der skal udfylde mange datoer i en formular? Det er jo ikke altid det bare er en fødselsdato der skal udfyldes (vi laver normalt systemer til dataopsamling, dokumentation, inventarstyring, service). En gang imellem må man lave løsninger af hensyn til brugeren og ikke serveren.
Avatar billede olebole Juniormester
20. marts 2003 - 01:12 #11
Så står meningen i de to første linier i kommentaren (20/03-2003 00:04:08) helt utydeligt for mig  :)

Funktionen gør det, der ikke burde være nødvendigt - og det kan da godt være, det kan gøre dig tilfreds.
Dernæst må man _aldrig_ forlade sig på serverside scripting.
Mange (og et stigende antal) slår JS fra i IE, da den indtil for ganske nylig var en sikkerhedsmæssig katastrofe.
Indtil da var det direkte tåbeligt at have slået JS til i IE, når man var på WWW - hele PC'en stod åben som en ladeport - og det var der mange, der tog konsekvensen af.

Man skal da _altid_ lave løsninger af hensyn til brugeren og ikke serveren. Gid flere udviklere ville tænke på det, når de laver serverside-programmering, så brugerne kunne slippe for overbelastede servere/databaser og langsomt afviklende scripts ... tingene hænger sammen  :)

Netop, da du åbenbart arbejder med det her, kommer det da totalt bag på mig, du har den drop-down-fobi. Det er ikke noget, jeg har mødt før ... yderst weird!

Jeg kan ikke se, det er vanskeligere for brugeren at bruge pilknapper - i stedet for at skrive i et tekstfelt.

Det er heller ikke noget, vi stødte på på min gamle arbejdsplads, hvor vi altid lavede timelange useability-test med mange deltagere, video-overvågning og interviews, når vi lavede et nyt site - eller foretog større ombygninger på et bestående.
Vi tog endda den ene store nationale og internationale pris efter den anden ... og useability var som oftest en vigtig årsag.
Avatar billede mortrr Praktikant
20. marts 2003 - 01:40 #12
De to linier var til "Hvorfor bruger du ikke det rigtige format fra start? Det lugter af en rigtig dårlig løsning" = fortæl en mand at han ikke har forstået noget, men jeg vil endelig ikke hjælpe dig nogen vejne. Og lignende fra andre indlæg.


Hvis I har lavet usabillity tests, har I vel også have oplevet at "alm. brugere" konsekvent griber musen hvis de skal vælge noget i en drop-down. Eller? Det har alle vores. Så nul drop-down hvis de kan undgås.

Det du'r ikke hvis man skal nå at indtaste x antal datoer, og drikke kaffe samtidigt. Vores kunder vil hellere have en nem og flydende indtastning. "120504 tab" er alt andet lige hurtigere end "1 pil-ned pil-ned tab pil-ned pil-ned tab pil-ned tab".


(jeg har en kat der lige har overfaldet tasterne, men jeg tror nok jeg har fået ryddet ud i mystiske tegn)
Avatar billede olebole Juniormester
20. marts 2003 - 04:00 #13
*ROTFLMAO* Indtil nu antog jeg dig for at være et forholdsvis seriøst, voksent menneske. Nu forstår jeg imidlertid bedre, hvorfor, du mener, du bør gå tidligere i seng - begge dele var tydeligvis fundamentalt forkerte antagelser!

Hvad er det dog for en gang overfølsomt vrøvl, du starter dit seneste indlæg med ...?!?!!!
Da det ikke er oplyst, hvorfor datoen ikke er formateret som ønsket, spørger jeg høfligt, hvorfor.
Derefter fortæller jeg ham, det lugter af en dårlig løsning, at bruge en 'hovsa-løsning' - i stedet for at bruge det rigtige format fra start.
Dermed er lagt op til en forklaring fra ham - hvorefter kan man tage fat på at finde den bedste løsning.
At du så tolker alt muligt paranoidt ævl ind i det og skyder mig dine syge tanker i skoene, siger jo betydeligt mere om din tilstand end om noget somhelst andet.

Jeg vil lade dig lave dine sider, som dine kunder godt kan lide dem. Kunne du så ikke love mig at få lidt den søvn, du tydeligvis har så frygtelig hårdt brug for? Din paranoia synes at antage nærmest tragi-komiske dimensioner.

PS: Vær endelig ikke ked af det med katten ... den er sikkert til at få mere fornuft ud af på dette tidspunkt af døgnet!
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