16. januar 2008 - 20:57Der er
16 kommentarer og 1 løsning
Form input validering inden submit
Hej,
Jeg vil gerne lave noget validering på en form således at den besøgende udelukkende må taste bogstaver, tal og "-" samt "_".
Som et alternativ til at bruge en regular expression som fx "/^[A-Fa-f0-9_-]$/" på hvert POST-variabel i actionscriptet, kunne det være rart at validere allerede når brugeren udfylder formen (også så vedkommende undgår at skulle gå tilbage og udfylde igen).
Er der nogen der ved (og gerne kan give et eksempel på) hvordan man laver noget med javascript i denne stil måske?
<input name="blabla" type="text" id="blabla" onkeydown="tjek om tast er valid, ellers alert() og lad brugeren rette det">
Håber nogen forstår hvad jeg mener med ovenstående og har et løsningsforslag :)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Hov.. glemte lige at sige: det skal jo være en skudsikker løsning som holder i alle browsere, og det er jeg i tvivl om overhovedet kan lade sig gøre? Hvad hvis man disabler javascript i browseren?
Ellers er eneste sikre måde jo desværre at validere i action-scriptet med regex eller lign.
(Jeg har tilføjet et '+' fordi jeg gætter på at du glemte det?)
Den burde gælde på alle browsere der har JavaScript enablet.
Du finder ikke nogen løsning som også fungere på browser, hvor client-side scripting er disablet. Det er jo ligesom nærmest definitionen af "disablet" at der ikke kan køres kode på dem lokalt. Disse tilfælde kan du kun håndtere ved server-side script - dvs. efter at folk har submittet deres input (og denne validering skal du jo under alle omstændigheder have alligevel).
Super.. lige i skabet! Én lille ting: når man trykker backspace for at slette det ulovlige tegn.. kan man allow det - eller endnu bedre: automatisk slette det ulovlige tegn fra feltet samtidig med man fyrer alert() af?
Backspace resultere ikke i sig selv i at der smides en alert. Jeg gætter på at du får den fordi at du skriver et enkelt tegn og så backspacer det. Dette vil jo resulterer i en tom streng som ikke er tilladt fordi at '+' i regexp'en betyder "1 eller flere". Prøv selv at skrive mere end et tegn ør at du backspacer.
Det kan rettes ved at ændre '+' til '*' som betyder "0 eller flere".
Den med at automatisk slette det ulovlige tegn er straks lidt mere tricky. For hvad nu hvis brugeren indtaster tegnet midt inde i alt den anden tekst? Hvilket tegn er det så der skal fjernes.
Mon ikke bindestregen skal stå sidst? Ellers har den en anden betydning - nemlig den samme som ved 'a-z', 'A-Z' og '0-9'. I øvrigt er der ingen grund til at bruge 'A-Z', når du bruger i-modifier'en
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.