Form validering driller

Tags:    javascript

Hej jeg er ved at lære noget javascript og jeg har lavet en kode som ikke rigtig virker :P

Når jeg sender formen skriver den fejl om at der ikke er udfyldt noget.
Når jeg skriver noget data ind i nogle af formene så bliver fejlen slettet fra nogle men bliver ved med at være der for andre selvom der er data i.

jeg har sat min kode ind her http://jsfiddle.net/e48km12c/

Jeg ved godt den kunne være skrevet mere enkelt hvilket jeg har gjort nu prøvede jeg bare og lave mere på denne måde for at lære arrays og loops



8 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 2 karma
Sorter efter stemmer Sorter efter dato
der ligger et problem her
Fold kodeboks ind/udKode 

dit fejl array vil se sådan ud hvis kun emne er udfyldt
Fold kodeboks ind/udKode 

måske du skulle droppe den for loop, og udskrive fejl beskeden direkte inde i if sætningen




jeg har omskrevet dit JS lidt, så jeg anvender et array mere.
et array holder styr på nummeret på fejl feltet, og et på fejlen.
(meget hurtigt omskrevet, og langt fra gennemtested)

man kunne godt lave det som et multi dim array, men er vist lidt overkille i forste omgang

Fold kodeboks ind/udKode 

afprøv det og lad dig inspirarer.




Indlæg senest redigeret d. 22.12.2014 22:17 af Bruger #16075
årsagen er at du ikke udskriver den tomme fejl besked, før du tester og dermed nulstiller teksten igen

Fold kodeboks ind/udKode 

det sammen skal selvføgelig gøres på de andre fejlbesked felter også


det kunne være man skulle lave det som et loop, så du starter med at nulstille alle fejlbeskeder, før du tester om indput felterne er udfyldt
hvorfor starter du med index 1 ?? array starter med index 0 så du har en tom plads i dit fejlbesked array (fejlbesked[0])





Hej Ronny
Tak for dit svar :)

Jeg har prøvet at sætte koden ind og det virker bedre den laver dog stadig fejl hvis jeg køre den trykker send så alle fejl kommer frem, skriver noget i emne så fjerner den både fejlen til emne og til besked

http://jsfiddle.net/e48km12c/1/

Det med arrays var fordi jeg ikke kunne få det til at virke, så læste jeg at den startede på 0 og det gav mere mening men der stod også man kunne hoppe den over og så gjorde jeg det bare fordi det var hurtigere end at ændre numrende :P



Ja Ronny du har nok ret i at det er meget nemmere :)
det var også kun for at lære noget om loops men jeg kaster mig over noget andet for at lære dem :)



Ronny du er genial det virker :)

Nu vil jeg lige sætte mig ind i det så jeg kan se om jeg også forstå det :D



Jeg syntes Ronny's kode er rigtig fin og et godt udgangspunkt, men jeg ville nok dele det lidt mere op. Og fjerne load eventlistneren. Hvis du ligger dine javascript scripts allerneders på din side lige inden </body></html> får du flere fordele:

* Siden vil load hurtigere
* Dit indhold vil være loadet.

Så istedet for load kaldet kan du lave:
Fold kodeboks ind/udJScript kode 


Du kunne herefter samle dine fejlbeskeder i en variable så du ikke skal skrive den samme besked flere gange:
Fold kodeboks ind/udJScript kode 


Men den del ville jeg nok også lave om, for du skal definere det for hvert id, her kunne man evt. bruge en class i stedet. og evt. en type. Nu vil jeg ikke skrive hele koden, men bare lidt pseudo kode. For det kode du har nu virker jo, men det er et eksempel til hvad du kan gøre i fremtiden så scriptet er mere genbrugeligt.


dine html elementer kunne hedde noget i stilen med
Fold kodeboks ind/udHTML kode 


Din javascript kan så lave
Fold kodeboks ind/udJScript kode 




Indlæg senest redigeret d. 30.12.2014 11:45 af Bruger #17081

Nu vil jeg lige sætte mig ind i det så jeg kan se om jeg også forstå det :D

når du har forstået den så prøv at kigge på denne, der bygger på det sammen, men lavet med et array af objecter, hvilke efter min mening er meget pænere, nemmere at udvide, og man slipper for de 2 array altid skal følges ad
Fold kodeboks ind/udKode 

som Dan er inde på, så prøv at lave din code mere generisk, så spare meget tid i længden.
men ja det grundlæggende som min tidligere code skal være på plads først




t