Ga naar inhoud

[JS] Formulier validator werkt niet


anoniem

Aanbevolen berichten

Ik heb moest als school opdracht een stuk javascript schrijven dat checkt of alles wel is ingevuld in een formulier. Onderstaande code is wat ik heb gemaakt. Er zit echter een probleem in waar niemand uit mijn klas mij mee kan helpen. Op de een of andere manier werkt het getElementById() niet helemaal zoals het zou moeten. de variabele 'veld' staat voor een invoer veld op de html pagina. ik heb al die velden in een array gezet en via de 'for-loop' ga ik de array af. het vreemde is echter dat ik nu met dit stuk code niets te zien krijg en ik in mozilla een javascript error krijg. de error is: Error: document.getElementById(veld[i]) has no properties Line 33 als ik in de for-loop i<10 naar i<1 verander doet het script het wel gewoon alleen krijg ik dan alleen te zien dat het eerste veld leeg is (Voornaam). Weet iemand van jullie wat ik precies fout doe? [code:1:66e4b9cda5] function valideer() { var veld = new Array() veld[0] = "FirstName" veld[1] = "LastName" veld[2] = "Email" veld[3] = "Address" veld[4] = "StreetNo" veld[5] = "PostalCode" veld[6] = "City" veld[7] = "Country" veld[8] = "UserId" veld[9] = "Password" veld[10] = "Password2" var veldnaam = new Array() veldnaam[0] = "Voornaam" veldnaam[1] = "Achternaam" veldnaam[2] = "E-mailadres" veldnaam[3] = "Adres" veldnaam[4] = "Huisnummer" veldnaam[5] = "Postcode" veldnaam[6] = "Plaats" veldnaam[7] = "Land" veldnaam[8] = "Gebruikersnaam" veldnaam[9] = "Wachtwoord" veldnaam[10] = "Nogmaals wachtwoord" var msg = ""; for (i=0; i<10; i++) { if( document.getElementById( veld[i] ).value == "" ) { msg += "Het veld '"+veldnaam[i]+"' is leeg.\n"; } } if (msg.value != "") { alert(msg); } return false; } [/code:1:66e4b9cda5]
Link naar reactie
Kloppen alle namen in je array met de namen in je formulier? Geen typfouten of hoofdletters fout? Overigens zal je lus het laatste veld nooit controleren [b:b3cd85cb27]i[/b:b3cd85cb27] zal namelijk geen 10 worden. Je kan dit simpel wijzigen door in de lus te zetten: [b:b3cd85cb27]i<=10[/b:b3cd85cb27]. Maar misschien is nog wel makkelijker om gewoon de lengte van je array te gebruiken: [b:b3cd85cb27]i<veld.length[/b:b3cd85cb27] Je kan ook overwegen om je array multi-dimensionaal (een array gevuld met arrays) te maken. Dan hoef je je geen zorgen meer te maken over het aantal velden, en of het aantal veldnamen gelijk is. Voorbeeldje: [code:1:b3cd85cb27] var veld = new Array ( new Array("FirstName", "Voornaam") ,new Array("LastName", "Achternaam") ,new Array("Address", "Adres") ); var msg = ""; for (i = 0; i < veld.length; i++) { msg += veld[i][0] + ": " + veld[i][1] + "\n"; } alert(msg); [/code:1:b3cd85cb27] Een klein nadeel hierbij is de leesbaarheid. Een andere notatie van bovenstaande die ik persoonlijk prettiger vind: [code:1:b3cd85cb27] var veld = [ [ "FirstName", "Voornaam" ] ,[ "LastName", "Achternaam" ] ,[ "Address", "Adres" ] ]; [/code:1:b3cd85cb27]
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...