Simpelt fix til formularer

Kære internet

telefonnummer.replace(/\s/g, "")

Ovenstående JavaScript-kode fjerner mellemrum i det telefonnummer jeg har indtastet i din formular.

Fordele

  • Det er meget simplere at implementere, end en besked der popper op og siger at mellemrum ikke er tilladte.
  • Dine brugere tænker ikke længere, at den der har lavet dit website er komplet idiot.

Har du også nogle gode råd du vil give videre, i samme stil?

Allan Ebdrups billede
Allan er ansat som Process & technology-lead hos Debitoor, hvor han arbejder med webbaserede regnskabsløsninger. Han arbejder med Lederskab, Continuous Delivery, Node.js og MongoDB.

Kommentarer (36)

Torben Mogensen

Jeg har set betalingsmoduler, der ikke vil acceptere blanktegn i kreditkortnumre, på trods af at den sædvanlige måde at skrive dem er i fire grupper af fire cifre. Et enkelt sted stod der endda "Skriv kreditkortnummeret nøjagtigt som det står på kortet".

En lignende ting gælder CPR-numre: Skal der blanktegn, bindestreg eller ingenting mellem de to ciffergrupper?
Det nemmeste er at fjerne begge dele.

Philip Grønbech

Der er desværre ikke et 1:1 forhold mellem postnummer og by(navn). Jeg har tjekket i forbindelse med en normaliseringsøvelse hvor det blev brugt som det åbenlyse eksempel.
Valby har feks både postnr 2500 og 0877, ihvertfald iflg. den tabel jeg gemte for 1-2 år siden...

Jesper Frimann

@Philip Grønbech
0877 er Aller Press i København C :=)

Men derfor har du en pointe alligevel, nemlig at der i hver by kan være flere postnumre, som regel er det posthuset, der har et selvstændigt postnummer.

Og så er der København [C|V|Ø,N,NV,S,K,SV], som er et glimrende eksempel.

// Jesper

Hans Schou

Hvis kun tal er tilladt, så er det:

telefonnummer.replace(/[^0-9]/g, "")

Så kan man dog vakle lidt på om man skal skrive "45" eller "" forrest, når man ikke kan skrive "+45".

Bjarke Walling

Jeg mener, at når man opretter en iTunes Connect-konto, så beder den om telefonnummer delt op i landekode, regionskode, selve nummeret og optional postfix. Det er lidt for overdrevet, måske passer det fint til numre i USA, men Danmark? Hvis man accepterer telefonnr. bør man vel også tage hensyn til at udelandske numre kan indeholde parenteser, bindestreger og måske andre tegn. Men som Hans skriver ovenfor, kan man fjerne alt der ikke er et tal og eventuelt tage højde for landekoder. På iOS bliver telefonnr. formateret efter landekoden, hvilket er lækkert. Det gav mig i hvert fald en visual feedback om at jeg havde indtastet et tysk nr. korrekt forleden. Det har jeg endnu ikke set på web, men det kommer nok.

Johan Færch

Strip nummeret for alt andet end tal og vis det i det format der passer til landet (DK=10 20 30 40, SE=123-456 78 90 eller 123-45 67 89 osv.)
Dermed er det intet problem om der indtastes +45, 0045 eller ej (der vil selvfølgelig altid være kreative mennesker der vælger 'Danmark' men bor i Tyskland, taster forkert eller på anden måde kan omgå syntaxen).

Pelle Söderling

Generelt bør man sørge for at transformere brugerinput til et uniformt format når det kan lade sig gøre uproblematisk, istedetfor at genere brugeren med tåbelige beskeder ala "telefonnummer må ikke indeholde mellemrum".

Regex's er ganske rigtigt gode til dette formål :)

Jan Vennike

I Rødding kommune, sdr. Jylland er der vist nok kun 2 postnumre, hvoraf det ene er 6630 Rødding - men det dækker så også over byerne Jels, Skodborg, Øster Lindet og sdr. Hygum. Generelt dækker postnumre store områder i Jylland, hvor der er flere byer inden for hvert postnr: http://www.postdanmark.dk/da/documents/faktaark/postnummerkort-download.pdf

Allan Høiberg

Langt de fleste steder bedes der om for- og efternavn som to felter - men hvor mange promille af almindelige hjemmesider får mon nogensinde brug for at sortere brugerne efter efternavn i praksis?

Peter Lind

Et postnummer kan dække over flere småbyer, så kan på den måde ikke knyttes til en by unikt (du kan på den måde lave mismatch mellem vejnavn og bynavn, hvis du automatisk hiver bynavn ud fra postnummer). Derudover mener jeg dog at erindre, at der er ét eller to steder i Jylland, hvor postnumrene er delt ret underligt - men jeg kan pt. ikke huske hvor det er, desværre

Jesper Frimann

@Christian Dias Løgberg.

Den er jo ikke fuldstændig. Hvor er f.eks. 0900 (Girobank nu DanskeBank), 0800 KHC (københavns PostCenter) m.m. ?

Man skal forstå at adresser i Danmark ikke entydige, heller ikke inden for hvert postnummer.

Læs f.eks. rapporten "Konsekvensvurdering Flertydige vejnavne", lavet af Devoteam, den kan googles på nettet.

// Jesper

Allan Ebdrup

Hvis kun tal er tilladt, så er det:

telefonnummer.replace(/[^0-9]/g, "")
Så kan man dog vakle lidt på om man skal skrive "45" eller "" forrest, når man ikke kan skrive "+45".

Helt klart. Jeg må indrømme at jeg ikke umiddelbart kan gennemskue grunden til at man ikke bare vil gemme telefonnummeret som det er indtastet, så afhængig af grunden er der nok forskellige løsninger. Jeg reagerede bare på at jeg forholdsvis ofte får en fejlmedelelse hvor der specifikt står at mellemrum ikke er tilladt.

Det er så oplagt automatisk at udfylde by, når en bruger har indtastet post nummer.

Ja bestemt, det er en lille hjælp, men dejligt. Specielt når man bor i Vallensbæk Strand, som er et forholdsvis langt navn.

Hvad med de sider hvor man kan indtaste sit telefonnummer og så slår siden hele ens adresse op? Jeg må indrømme at jeg selv har haft ret dårlige resultater med det. Det er faktisk en værre oplevelse at forsøge at bruge funktionen og så virker den ikke. Så er noget der skulle være en hjælp, blevet til ekstra arbejde uden gevinst.

Og nu hvor CVR-registeret vil stille sine data gratis til rådighed via email, er der så nogen der har spekuleret på at lave et komplet CVR udtræk og slå firma-adresser op ud fra det?
Den ligger godt nok ikke lige til højrebenet, med den måde som data er blevet gjort tilgængelig...

Pelle Söderling

Jeg må indrømme at jeg ikke umiddelbart kan gennemskue grunden til at man ikke bare vil gemme telefonnummeret som det er indtastet, så afhængig af grunden er der nok forskellige løsninger.

Som du selv nævner er der mange sider hvor man kan slå ens adresse op baseret på telefonnummeret - slår man op i egne data her (f.eks. hvis brugeren har handlet hos en tidligere), så er det meget praktisk at man lagrer og foretager opslaget baseret på et ensartet format, så brugeren ikke død og pine skal huske om han indtastede telefonnummeret med eller uden mellemrum og lign :)

Jan Lunddal Larsen

Et postnummer kan dække over flere småbyer, så kan på den måde ikke knyttes til en by unikt (du kan på den måde lave mismatch mellem vejnavn og bynavn, hvis du automatisk hiver bynavn ud fra postnummer).

Men defineres de ikke med samme bynavn efter postnummeret (som jo er navnet på distriktet og ikke nødvendigvis byen)?

Jeg bor i Ganløse, der ligger i 3660. Man skriver ikke 3660 Ganløse, men 3660 Stenløse,og så vil man normalt angive Ganløse under Sted, adresselinje 2 eller efter vej/husnummer.

Martin Glob

  • Fjern leading og trailing whitespace fra email og passwords før de behandles. Irriterende hvis man copy-paster fra en liste og lige får et mellemrum med.
  • Lad dog folks skrive hvad de vil og hvordan de vil - medmindre det er sindsygt vigtigt at det er formatteret korrekt.
  • Alert bokse er nogo. I sær dem hvor man præsenteres for en fejlbesked i hver boks....
  • Hvis jeg mangler at udfylde et enkelt felt, så undlad at slette andre felter. Typisk skal man indtaste kodeord hver gang blot fordi man har glemt et eller andet.
  • Undlad at være dum.... Hvis mellemrum ikke er tilladt, så fjerne dem dog! Der er ingen grund til at fejle.
  • Hvis brugeren angiver "123" som kodeord, og du driver et forum for strandsandsamlere, så fortæl dem blot at det er et møgkodeord og giv dem mulighed for at vælge et andet - Men lad for pokker da brugeren bestemme. Jeg kan blive rigtig træls over web sites der kræver 8 tegn, mix-upper-lower samt special tegen.
  • Gør det enkelt... Hvor mange er IKKE i stand til at skrive deres adresse på en linie? Check "vej nr, postnr, by" via en af de mange location services og kan de ikke finde den, så bed brugeren om at få den specificeret.
  • "Gentag email" - Nej.. Send en mail og verificer den vej. Jeg kan personligt godt taste forkert to gange i træk...

Man kunne blive ved...

/martin

Flemming Sørensen

Utroligt så lidt i (de fleste af jer) ved om postnumrene.

Et postnummer kan godt dække et stort område, uden at det ændre ved hvilken by det er tilknyttet. "Præstebakken 18, 9670 Løgstør", ligger ikke i Løgstør, men i Overlade. Intet problem, et postnummer er et postnummer, intet andet. For tyve år siden, var Overlade under Farsø, men lå i Løgstør kommune, så Overlade kirke havde adressen "Præstebakken 18, 9640 Farsø", selvom den ikke lå i Farsø kommune. Der er intet der hedder "Præstebakken 18, 9670 Overlade", af den helt simple grund, at 9670 er Løgstør (og omegn).

Man kan altid knytte et bynavn til et postnummer, det er kun omvendt at der kan være problemer (en by, to postnumre), men det er jo irrelevant, når folk indtaster et postnummer, og bynavnet automatisk skal udfyldes..

Michael Harly

det er godt folk som tror at post nr = By/kommune
post nr er noget som Post Danmark står for, ikke kommunerne eller staten så det har ikke noget men hinanden at gøre.

Da jeg var kasser i en sportsklub kunne vi få tilskud fra den kommune hvor klubben havde adr. i og for de medlemmer som boede i samme kommune, det var rimelig svært for ikke at sige umuligt at finde af, ud fra adr. og post nr.

Peter Lind

Fjern leading og trailing whitespace fra email og passwords før de behandles. Irriterende hvis man copy-paster fra en liste og lige får et mellemrum med.


Jeg må indrømme at jeg aldrig kunne drømme om at røre ved en brugers indtastede kodeord. Du ved ret beset ikke om mellemrummet var intentionelt eller ej, så du risikerer at fjerne entropi. At give en advarsel (ikke-blokkende) ville jeg overveje i stedet.

Christian Dias Løgberg

@Jesper

Den er jo ikke fuldstændig. Hvor er f.eks. 0900 (Girobank nu DanskeBank), 0800 KHC (københavns PostCenter) m.m. ?

Jeg kan fint se de postnumre du efterspørger (dog ser det ud til at du har byttet rundt på dem):
{"postnr":"800","navn":"Høje Taastrup","gade":"Girostrøget 1","firma":"BG-Bank A/S","provins":"True","land":"Danmark"}
{"postnr":"900","navn":"København C","gade":"","firma":"Københavns Postcenter + erhvervskunder","provins":"False","land":"Danmark"}

Claus Hillker

Skift tastaturlayout alt efter hvad der skal indtastes i feltet. Med mængden af forms der efterhånden udfyldes fra tablets og lignende er det rart når tingene passer sammen.

Leif Neland

Det duer så ikke, hvis man har direkte indkald ved at man ringer hovednummeret, får klartone, og taster lokalnummer.

Men det er der vist heller ikke så mange andre end mig, der har :-)

Niels Elgaard Larsen
Jimmy Krag

Du kan jo altid lave en computed column i din database til at finde den del af et navn der ligger efter det sidste mellemrum.

Niels Hansen

Ikke fordi løsningen med en computed column ikke er god nok, men den skal lige være lidt smartere. Jeg kan ikke huske de specifikke regler, men man skal også håndtere folk med nogle af de hersens udenlandske efternavne som "van Gogh", "de Sade", "von Ribbentrop" eller "Ibn Fadlan". Muligvis er deres officielle danske efternavne "Gogh", "Sade", "Ribbentrop" og "Fadlan", men de van'er og de'er jeg kender ville blive kede af at få forkortet deres efternavn.

Leif Neland
Log ind eller opret en konto for at skrive kommentarer

IT Businesses