controle ingave formulier

Status
Niet open voor verdere reacties.

refereenr1

Gebruiker
Lid geworden
25 okt 2008
Berichten
43
Ik wil scriptje maken om de gebruikers te laten inloggen en te checken
dat ze alles ingegeven hebben.
Het werkt, maar ik heb nogal veel 'IF....THEN' structuur.
Wie kan me hiermee helpen?
Zo dat hij naam, voornaam, adres, emailadres, woonplaats en dergelijke
controleert op correcte ingave.

Ik zou dit graag iets beter zien, maar vind niet hoe…

Dus met for lus ofzo…

Kan je helpen aub??

Website voor welke moet gebruikt worden is : www.montenschrist.tk
<http://www.montenschrist.tk>
[js]
//dit is mijn scriptje:

function checkFields() {
var missinginfo = "";
if (document.form.naam.value == "") {
missinginfo += "\n - Achternaam";
}
if (document.form.voornaam.value == "") { missinginfo += "\n -
Voornaam"; } if (document.form.straatnaam.value == "") { missinginfo
+= "\n - Straatnaam"; } if (document.form.huisnummer.value == ""||
document.form.huisnummer.value >=9999 ||document.form.huisnummer.value
<=0000) {
missinginfo += "\n - Huisnummer";
}
if (document.form.postnummer.value == ""||
document.form.huisnummer.value >=9999 ||document.form.huisnummer.value
<=0000) {
missinginfo += "\n - Postnummer";
}
if (document.form.gemeente.value == "") { missinginfo += "\n -
Gemeente"; } if ((document.form.from.value == "") ||
(document.form.from.value.indexOf('@') == -1) ||
(document.form.from.value.indexOf('.') == -1)){ missinginfo += "\n -
Emailadres"; } if(document.form.comments.value == "") { missinginfo +=
"\n - Verduidelijk uw vraag graag"; }

if (missinginfo != "") {
missinginfo ="________________________________\n" + "Vul volgende
veld(en) in aub:\n" + missinginfo; alert(missinginfo); return false; }
else return true; }
[/js]
 
Laatst bewerkt door een moderator:
Oh my, hoe heb je dit ooit kunnen schrijven! Ik zie door de code het script niet meer. Hier, nu zie je tenmiste wat het precies doet:[JS]
function checkFields()
{
var missinginfo = "";

if(document.form.naam.value == "")
{
missinginfo += "\n - Achternaam";
}

if(document.form.voornaam.value == "")
{
missinginfo += "\n - Voornaam";
}

if(document.form.straatnaam.value == "")
{
missinginfo += "\n - Straatnaam";
}

if(document.form.huisnummer.value == ""|| document.form.huisnummer.value >=9999 ||document.form.huisnummer.value <=0000)
{
missinginfo += "\n - Huisnummer";
}

if(document.form.postnummer.value == ""|| document.form.huisnummer.value >=9999 ||document.form.huisnummer.value <=0000)
{
missinginfo += "\n - Postnummer";
}

if(document.form.gemeente.value == "")
{
missinginfo += "\n - Gemeente";
}

if((document.form.from.value == "") || (document.form.from.value.indexOf('@') == -1) || (document.form.from.value.indexOf('.') == -1))
{
missinginfo += "\n - Emailadres";
}

if(document.form.comments.value == "")
{
missinginfo += "\n - Verduidelijk uw vraag graag";
}

if(missinginfo != "")
{
missinginfo ="________________________________\n" + "Vul volgende veld(en) in aub:\n" + missinginfo;
alert(missinginfo);
return false;
}else{
return true;
}
}[/JS]Zoals je ziet (en zelf al zei) zit er erg veel herhaling in. Nu, daar is dus iets leuks voor: functies. Check deze eens:
[JS]function checkIsLeeg(data)
{
return data == "";
}[/JS]
en[JS]fuction checkIsGoedNummer(data)
{
return !checkIsLeeg(data) && data >=9999 && data <= 0;
}[/JS]je kan de de functies zo aanroepen:
[JS]// code

if(checkGoedNummer(document.form.huisnummer.value) == false)
{
missinginfo += "\n - huisnummer";
}[/JS]dat scheelt al aardig in de code.

Voor de rest is er niet heel veel aan te doen qua verbetering, omdat je verschillende soorten velden hebt (text en getallen enzo).
 
dus wat moet ik dan uiteindelijk schrijven?
Volgens lerares is er een oplossing met een lus, waarop je herhaald op het type, kan je eigenlijk allemaal tekst type van maken, ook de cijfertjes, wat eigenlijk ook goed is.
Maar ik zie het niet....kan je nog eens helpen?

Alvast bedankt voor de hulp al!

<<<dit is wat lerares als commentaar op mijn code gaf:

controle formulier
- indien je veel velden hebt, zoek een oplossing in de id="..."-naam
zodat je de velden voor de validatie via een lus kan benaderen.

- raadpleeg het internet, ontelbare tips te vinden over form validatie.
 
Laatst bewerkt:
oh, ja, dat is zeker zo.

Goed, laten we het eens zo doen. Je slaat eerst alle velden op in een array (alleen velden die hetzelfde zijn, dus met text). Ik doe er 2 voor:
HTML:
<input type='text' id='naam' />
<input type='text' id='straatnaam' />
[JS]
var i, l, msg = '', velden = [document.getElementById('naam'), document.getElementById('straatnaam')];
l = velden.length;

for(i=0;i<l;i++)
{
if(velden.value == "")
{
msg += 'Veld ' + i + ' is verkeerd!\n';
}
}

alert(msg);[/JS]nu, wat puntjes:
1. je hebt geen namen, alleen maar id's, dus je moet iets verzinnen om een naam eraan te 'binden' (dubbele array iemand?)
2. ik denk dat je lerares wilt dat je loopt in je document.form, maar ik vind dit mooier
3. Helpmij is niet voor huiswerkvragen​
 
Klopt dat niet is voor huiwerkvragen, verwacht ook geen oplossing, maar wel goed idee om het ZELF te vinden. Daar geraakt ik vast.

Als ik jouw versie probeer, zegt hij steeds: "object wordt verwacht", wat (zou) ik dan verkeerd doen?
 
Ik denk een fout in de gEBY; als het goed is zie je op welke regel de fout zit (en wie het object verwacht!). Als je firefox gebruikt kan je in het foutenconsole (ctrl+shift+j) veeel meer info vinden over de fout dan in IE.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan