08. oktober 2008 - 22:07Der er
28 kommentarer og 1 løsning
Hjælp til forskellige 'valideringer' af indhold i form
Hello.
Jeg skal bruge en "saml-selv løsning" til forskellige validering af forme. Saml-selv skal forstås på den måde, at jeg gerne vil have hjælp til at validere indhold af forskellige inputs i en form før den submittes - og jeg vil gerne vide hvordan hver del i formen kan valideres, så jeg til syvende og sidst selv kan sammensætte min egen validering.
Jeg skal bruge hjælp til at: - Validere et tekst input og returnere med en fejl hvis input'et ikke er valideret - Validere radio buttons. Hvis ingen af fx 2 radio buttons er valgt skal der returneres en fejlbesked. - Validere textareas (jeg ved ikke om det går ind under validering af et tekst felt - i så fald, glem dette punkt :-)) - Validere tekst input hvor der er angivet en value - fx "Navn". Hvis brugeren så vil submitte formen og "Navn" eller ingenting står i feltet skal der igen meldes om en fejl.
Med "validering" mener jeg at tjekke feltet og hvis nu der fx ikke er skrevet noget indhold i feltet skal brugeren mødes med en alert der minder dem om det. Simpelt.
Ellers, spørg. Det er sikkert noget værre sludder jeg har skrevet :-)
if(document.getElementById("felt-id").value===""){ alert("Feltet er blankt!"); document.getElementById("felt-id").focus(); return false; }
Denne sætter også fokus i feltet og afslutter funktionen.
Jeg mener også, du kan teste textareas på præcis samme måde, dvs. med ".value".
Og til det med "Navn" så må det blive:
if(document.getElementById("felt-id").value===""'||document.getElementById("felt-id").value===document.getElementById("felt-id").defaultValue{ alert("Feltet er skal udfyldes korrekt!"); document.getElementById("felt-id").focus(); return false; }
Her testes dog ikke på "Navn", men på om der står en anden værdi i boksen end den, der stod, da siden blev loadet. Dette gøres med ".defaultValue".
if(document.getElementById("felt-id").value===""'||document.getElementById("felt-id").value===document.getElementById("felt-id").defaultValue{ alert("Feltet er skal udfyldes korrekt!"); document.getElementById("felt-id").focus(); return false; }
Og nå ja, radiobuttons:
if(!document.getElementById("radio-id1").checked&&!document.getElementById("radio-id2").checked){ alert("Du skal vælge en radiobutton!"); return false; }
Og lige en ekstra tilføjelse - så vil jeg også gerne kunne validere et felt på ulovlige tegn - altså alerte folk hvis de bruger ulovlige tegn, såsom "div", "span" osv.
Du angriber 'sikkerhed' og 'validering' fra den forkerten ende. Hvis du forsøger at definere, hvad folk ikke må skriver, har du tabt på forhånd ... du har ikke fantasi til at forestille dig, hvad kreative folk med skumle hensigter kan finde på ;o) Beslut dig i stedet for, hvad du vil godtage - og så skal du sikre dig, der ikke skrives andet.
Designerdrugs er et meget godt billede på fænomenet. Aldrig så snart et stof bliver forbudt, dukker samme stof op, hvor et enkelt atom i molekylestrengen er skiftet ud ... voila - et nyt, ikke-forbudt stof (= et nyt lovligt stof). Der findes bunker af variationer over temaerne LSD, kokain og amfetamin - alle skabt af én og samme grund. It's the never ending story ;o)
Nu taler vi om super simpel validering her - det gør intet at folk kan slå javascript fra og stadig komme igennem, for folk der har slået javascript fra har ingen adgang til siden ;-)
Men altså, keep in mind at det ikke er det helt store tekniske helvede vi er ude i.
Så, talbage til forrige besked: Er der nogen der er friske på at sætte et fuldt eksempel op?
Og så opdagede jeg lige en kritisk 'fejl': Scriptet kan ikke validere danske tegn (æ, ø og å) - hvordan retter jeg det? Jeg har fundet funktionen i javascriptet, men retter jeg i den fejler scriptet. Så før jeg uddeler point vil jeg gerne have en løsning ;-)
Indsæt æÆøØåÅ i TestInputType(objValue,"[^A-Za-z]",strError, så det bliver TestInputType(objValue,"[^A-Za-z\æÆøØåÅ ]",strError, Så tager den æÆøØåÅ og mellemrum
Dette har jeg ikke testet, da æøå ikke rigtigt er understøttet endnu, men vil mene du kan sætte det ind her var regexp_domain=/^[\w-\.]*\.[A-Za-z\æÆøØåÅ]{2,4}$/; men har ikke testet det....
Hrm, zips, du har vist overset de gældende regler for mail-adressers udseende, for ifølge rfc 2821 er den eneste, der nogensinde må checke validiteten af det, der står foran @-tegnet, mail-hosten, så faktisk er @ksdhsd.dk en ganske gyldig mail-adresse !-)
-- og det er f.eks.
"kjk"@kjlasj.dk
"hjkhg@jkklj"@jkhjkf.dk
osv. også ...
-- og så indeholder shorttagget \w _altid_ også underscore, i visse regex-implementationer også locale-specifikke tegn ...
-- og hvis du vil godkende æøå, så er det vel også i orden at hedde René, Kühle m.m.fl. !-)
Helt sikkert noget roenving eller olebole kan fikse for dig, eller også kunne w13 hjælpe med det, jeg har forsøgt nok med dårlige forsøg på noget jeg ikke ved noget om :)
ja den backslash kan fjernes som olebole henviser til :)
Med det jeg forsøgte virker med æøå@æøå.dk men jeg har ikke læst rfc 2821 som roenving henviser til, men vil da gøre.
Som du skriver 09/10-2008 16:28:03 mangler du stadig en løsning på æøå i mail adresse
Tjah, jeg tog for et par år siden og lavede en streng, der gav mig alle de tegn, man kan lave med et almindeligt windows-tastatur (og som følgelig har en eller anden validitet i mit locale !-) og smed dem ind i en validering, f.eks. sådan:
var t = "\\wáàãäâæåçéèêëìíîïñòóôõöøùúûüýÿ"; var regexp = new RegExp("^.*@["+t+"]["+t+"\\.\\-]*\\.[a-z]{2,6}$","i"); tekst=f.mail.value.toLowerCase(); if (!regexp.test(tekst)||tekst.match(/\.\.|\.@|-@|--/)){ alert ("Der skal stå en gyldig e-mail adresse i mail feltet"); f.mail.focus(); return false; }
Som sagt plejer konklussionen blandt kodere at være: "Nøjes med at tjekke de mest oplagte fejl" - og hvis jeg ikke husker helt forkert, så er roenving én af dem, jeg er nået til koncensus med på dette område =)
Jeg kan godt se at mit link som jeg gav ssv 09/10-2008 12:33:43 kun valider det mest oplagte og derfor mente jeg det netop var nemt og simpelt at bruge.
At han ville valider æøå i mail adressen, noget jeg ikke selv gør, var jeg dum nok til at prøve noget jeg ikke har forstand på :)
Men er som altid glad for at høre fra dem som ved noget og som har stor indsigt i det i skriver om, på den måde lære jeg jo netop det rigtige :)
Synes godt om
Ny brugerNybegynder
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.