Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[JS] Formulier validator werkt niet

Wizz15
2 antwoorden
  • 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) 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.
    ";
    }
    }

    if (msg.value != "")
    {
    alert(msg);
    }

    return false;
    }
    [/code:1:66e4b9cda5]
  • 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] + "
    ";
    }

    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]

Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.