Avatar billede 13thsky Nybegynder
22. maj 2012 - 15:13 Der er 25 kommentarer og
1 løsning

Validere navn i form

if (!/^[a-zA-Z]+ [a-zA-Z]+$/.test(document.bestillingsform.CUSTOM_name.value)){
      alert("Navn skal være både for- og efternavn!");


Ovenstående validerer mit navne-felt i en form. Men den gør at det ikke er muligt f.eks. at hedde Kim Ole Andersen. Den æder simpelthen ikke tre ord.

Jeg vil gerne have at den tjekker at der er ét ord et mellemrum og mindst et ord mere.

Tnx
Avatar billede Broxigar Praktikant
22. maj 2012 - 15:28 #1
Prøv dette:

var input = "Danmarks Tekniske Universitet";

var pattern = /[A-z]+ [A-z]+$/;

if(!pattern.test(input)){
  alert("Navn skal være både for- og efternavn!");
}

Dette godkender alle strings hvor der IKKE er mellemrum til sidst, og der er mellemrum mindst en gang :)
Avatar billede Broxigar Praktikant
22. maj 2012 - 15:29 #2
Rettelse, var input = document.bestillingsform.CUSTOM_name.value, selvfølgelig
Avatar billede erikjacobsen Ekspert
22. maj 2012 - 16:04 #3
Den accepterede løsning acceptere faktisk

  var input = "293dhe&%¤/&uh9283 Tekniske Universitet";

og

  var input = "Hans Han[]en";

hvorimod hverken den accepterede løsning eller spørgerens udgave accepterer

    var input = "Poul Schlüter";

Så ... hvad er det egentlig, der skal valideres for?
Avatar billede Broxigar Praktikant
22. maj 2012 - 16:37 #4
#3 Der skal valideres for om der står to eller flere navne. Det syntes jeg da var rimelig tydeligt i opgavebeskrivelsen.

Derudover, så er ü et unicode bogstav som ikke er en del af ANSI, og da UTF8 ikke er implementeret i alle javascript motorerne, så kan man ikke validere et ü i alle browsere. Der er det så at man ofte bruger u istedet.

Du bruger vel heller ikke ÆØÅ når du bestiller noget fra udlandet?


Istedet for at rakke ned på spørgeren og svareren, burde du måske selv komme med et forslag til en løsning eller forbedring af den løsning der er blevet givet, for din nuværende kritik er fornærmende overfor både mig og 13thsky
Avatar billede erikjacobsen Ekspert
22. maj 2012 - 16:51 #5
Det er da overhovedet ikke fornærmende at påpege at din løsning er forkert.

Spørgsmålet er vel hvad spørgeren opfatter som et navn.
Avatar billede 13thsky Nybegynder
23. maj 2012 - 14:02 #6
Hey drenge. #3, Svaret var ganske rigtig korrekt og hvad jeg bad om. Men faktisk har du ret #4. Jeg vil gerne have at både "Poul Schlüter", "Grethe Thomsen 67" og ja hvis brugeren kommer til at lave et mellemrum efter navnet, eller dobbelt-mellemrum mellem de to navne.

Måske løser det faktisk det hele ved blot at bede om at der skal være to strenge, uanset indhold.

Ser frem til svar. Jeg donerer gerne 60 point mere :)
Avatar billede erikjacobsen Ekspert
24. maj 2012 - 00:34 #7
Problemet er at definere hvad et navn er. Må det indeholde en bindestreg "Kurt-Otto"? Eller "O'Reilly"? I begge tilfælde skal det jo nok tillades.

Men "a82!!3qoeha --sadqw38" er nok ikke godt nok. På den anden side er "Anders And" det heller ikke.

Men vi må jo heller ikke afvise et lovligt navn, bare fordi vi ikke lige kender reglerne. Måske kan man en dag hedde "Karl=Otto".

Hvis vi nu antager, at folk generelt er fornuftige, og at det eneste du egentlig vil, er at gøre opmærksom på at de skal skrive mindst to navne, hvis de nu kun skriver "Athena", så er problemet mindre. Du kan gøre:

1: Fjern eventuelle foran- og bagvedstillede blanke med trim-funktionen.
2: I den resterende streng skal der så være mindst et mellemrum.
Avatar billede 13thsky Nybegynder
24. maj 2012 - 15:10 #8
Hmm... jeg er ikke så teknisk, vil du ikke skrive svaret?

I øvrigt, er det her første gang det emne diskuteres? Det kan da ikke passe at der er ikke er nogle andre der har gennemtænkt validering af navn og lavet en exp. som bare virker?
Avatar billede erikjacobsen Ekspert
25. maj 2012 - 19:07 #9
"Bare virker" er slet ikke veldefineret. Det kommer an på hvad du vil, og det kan jeg slet ikke læse mig til endnu.

Hvis du mener slutningen af #7 er ok, så må du sige det. Og så kan du få et par linier kode. Det betyder at

  "q928eq9wdh dhq89032dhq" accepteres
  "asdq qeq3 dfwq3r" accepteres
  "kurt" ikke accepteres
  "anders and" accepteres
  "Poul Schlüter" accepteres
  "Johanne U'mulius Kal-orius" accepteres

Men det store spørgsmål er som sagt, hvad der godt nok til dig?
Avatar billede 13thsky Nybegynder
29. maj 2012 - 15:38 #10
Ja, tak. Det er vist lige det jeg skal bruge. Du må meget gerne sende mig svaret.
Mange tak.
Avatar billede 13thsky Nybegynder
29. maj 2012 - 15:39 #11
Lige en ting. Det skal også være muligt at komme til at lave dobbelt mellem rum både før og efter ordene. Det kommer kunderne i webshoppentil nogle gange.
Avatar billede olebole Juniormester
29. maj 2012 - 20:13 #12
<ole>

@Broxigar: "Derudover, så er ü et unicode bogstav som ikke er en del af ANSI, og da UTF8 ikke er implementeret i alle javascript motorerne, så kan man ikke validere et ü i alle browsere. Der er det så at man ofte bruger u istedet."

Du lever vist i et meget andet århundrede. I JavaScript har man jo netop forlængst forladt ANSI til fordel for Unicode - endda helt tilbage i version 1.5!

Langt den største del af verden bruger helt uden problemer Unicode og JavaScript sammen. Problemerne opstår først, når man roder forældede, provinsielle tegnsæt som iso-8859-1.

"Du bruger vel heller ikke ÆØÅ når du bestiller noget fra udlandet?"

Det handler om noget fuldstændig andet - bl.a. lokale keyboard layouts. Pointen ved at bruge Unicode (f.eks. utf-8) er, at tegnsæt på basis af Unicode indeholder langt flere tegn - herunder Æ, Ø og Å. Der er derfor intet i vejen for at bruge Æ, Ø og Å på en tysk eller amerikansk side ... bare den bruger utf-8.

"Istedet for at rakke ned på spørgeren og svareren, burde du måske selv komme med et forslag til en løsning eller forbedring af den løsning der er blevet givet, for din nuværende kritik er fornærmende overfor både mig og 13thsky"

En løsning kunne alternativt være, at du sætter dig lidt ind i det, du udtaler dig om. Du har tydeligvis hverken begreb om tegnsæt, eller hvad JavaScript understøtter  *o)

/mvh
</bole>
Avatar billede erikjacobsen Ekspert
31. maj 2012 - 20:50 #13
Det må blive noget i retning af:

var x=document.bestillingsform.CUSTOM_name.value.replace(/^\s\s*/, '').replace(/\s\s*$/, '');
if (!/ /.test(x)) {
  alert("Navn skal være både for- og efternavn!");
}
Avatar billede 13thsky Nybegynder
04. juni 2012 - 20:37 #14
Tak for jeres tid og forslag til løsninger.

Jeg har valgt at fjerne valideringen da det åbenbart er så indviklet at det ikke er umagen værd. Det er en webshop jeg skal bruge det til og de forslag der er kommet har allerede kostet mange kunder fordi det er ideer, bud og "noget i retningen af". Jeg kan ikke lade mine kunder være testere.

Jeg prøver i stedet at google et svar. Der er nok andre webshops der har haft brug for at validere et navn-felt.

Nogen der ønsker point?
Avatar billede 13thsky Nybegynder
04. juni 2012 - 20:40 #15
Har netop fået en mail fra en kunde som ikke kunne skrive "Nikolai Nørregaard" da jeg brugte dette forslag:

if (!/[A-z]+ [A-z]+$/.test(document.bestillingsform.CUSTOM_name.value)){
      alert("Navn skal være både for- og efternavn!");
            return false; }

Gad vide hvor mange kunder der ikke har skrevet at de fik en fejl... Suk.
Avatar billede erikjacobsen Ekspert
04. juni 2012 - 21:03 #16
Det var jo det vi fortalte dig. Ingen point til mig, tak. Olebole plejer også at sig nej. Og da du allerede har givet point til et forkert svar, så er sagen sådan set bare slut.
Avatar billede olebole Juniormester
04. juni 2012 - 21:05 #17
Jamen, det er da ikke spor svært. Når du engang får lært at definere et ønske entydigt, vil det letteste i verden være at give dig et entydigt svar. Specielt, hvis det koster dig penge, er det nok ikke særlig klogt at fedte rundt i forklaringerne, som du har gjort i denne tråd  =)
Avatar billede 13thsky Nybegynder
04. juni 2012 - 21:08 #18
Læg mærke til denne sætning i mit første indlæg:

"Jeg vil gerne have at den tjekker at der er ét ord et mellemrum og mindst et ord mere."

Det er vist et ret entydigt ønske.
Avatar billede erikjacobsen Ekspert
04. juni 2012 - 21:14 #19
Bestemt entydigt, da vi efter #9 har en idé om hvad du mener med et "ord". Og så får du løsningen i #13. Men du blev advaret om "løsningen" i #1 og #2 - ikke sandt. At du så mister kunder på det, må være dit problem.
Avatar billede olebole Juniormester
04. juni 2012 - 21:14 #20
Så er det nok bare os, der er for dumme til at leve af vores erhverv. Bær over med os  =)
Avatar billede 13thsky Nybegynder
04. juni 2012 - 21:36 #21
Nogle gange skal I, som lever af at løse disse opgaver, tænke på at vi dødelige bruger termer som "ord" fordi vi ikke tænker i 0'er og 1'er som I gør. I villle nok kunne leve endnu bedre af jeres erhverv, hvis i rent kommunikativt blev bedre til at mødes med dem som ikke forstår jeres sprog.

Den her debat var måske blevet lukket med et enkelt svar hvis jeg havde formuleret mig med med termer som reg. expressions og strings, i stedet for "tjekke" og "ord"..... ?
Avatar billede erikjacobsen Ekspert
04. juni 2012 - 21:43 #22
Jeg har på fornemmelsen, at vi også er dødelige .... nu må vi se ;)

Men det er jo netop derfor jeg spørger ind til hvad du mener. Og vi når frem til det. Det synes jeg da er fint. Du kunne jo have fjernet dit tjek tidligere, hvis det havde betydet noget for dig.
Avatar billede olebole Juniormester
04. juni 2012 - 21:48 #23
Jamen, det er jo, når vi stiller ganske almindelige spørgsmål på dansk, du står af. Derudover tror jeg næppe, du kender vores baggrund, eller hvem vi fagligt kommunikerer med, eller hvordan  *o)
Avatar billede 13thsky Nybegynder
04. juni 2012 - 21:49 #24
Så nåede vi da også op på #23 indlæg uden en løsning. Jeg synes bare vi skal stoppe her og håbe på at andre der skal have valideret et tekstfelt ikke finder frem til denne "expert"-løsning.
Avatar billede erikjacobsen Ekspert
04. juni 2012 - 21:50 #25
Løsning i #13, 4 dage siden
Avatar billede olebole Juniormester
04. juni 2012 - 21:53 #26
Nej, lad os da håbe, de støder på en af de andre hundredevis af tråde, som vi tilfredsstillende har besvaret om samme emne. Eneste forskel er vel spørgsmålsstilleren  *D
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