Form, velden controle

Status
Niet open voor verdere reacties.

Deckhengst

Nieuwe gebruiker
Lid geworden
13 nov 2008
Berichten
2
Hoy,

Hoewel ik al enkele jaren actief ben met html, css, PHP, ben ik nog maar net begonnen met javascript, dus waarschijnlijk is mijn probleem heel eenvoudig op te lossen.

Mijn bedoeling is om met een javascript een controle uit te voeren op meerdere velden om te kijken of er hier iets ingevuld werd. Ook is er een extra controle op een emailveld om te controleren of dit de juiste vorm heeft. Na de controle moet er een alert weergegeven worden met alle fouten.

Een extra moeilijkheid is dat dit script op meerdere formulieren moet toegepast kunnen worden.

Mijn javascript staat in een extern bestand dat ik aanroep bij het verzenden:
<script language="Javascript" type="text/javascript" src="formvalidation.js"></script>
<form name="registrate" onsubmit="return validateForm(this.name, Array(name,firstname), mail);">

In mijn javasript staat dan:

Code:
function obligate(field){
	if ((field.value == null)||(field.value == "")){
		return false;
	}
	return true;
}

function validateEmail(field) {
// controle mail in de juiste vorm
return false
}

function validateForm(fName, obligateFields, fMail){
//fName: naam van het formulier
//obligateFields: een array van de verplichte velden
//fmail: de naam van het emailveld

	var error = '';

	for(i=0;i<obligateFields.length;i++){
		if(!obligate('document.' + fName + '.' + obligateFields[i])){
			error += 'U heeft geen ' + fName + '.' + obligateFields[i] + '.name' + ' ingevuld.\n';
		}
	}

	if(!validateEmail('document.' + fName + '.' + fMail + '.value')){
		error += 'U heeft geen geldig emailadres ingevoerd!\n';
	}

	if ((error == null)||(error == "")){
		return true;
	} else {
		alert(error);
		return false;
	}
	return false;
 }

Ik heb even een een screenshot van het alert genomen:
Knipsel.JPG


Het probleem is nu dat de controles altijd false generen.Volgens mij roep ik de velden niet goed aan. ('document.' + fName + '.' + fMail + '.value')

Via wat zoekwerk vond ik dat ik de functie eval() zou moeten gebruiken, maar dan lijkt het script helemaal niet meer te werken.

Is er iemand die mij op de goede weg kan helpen?

Alvast bedankt,
Deckhengst
 
inderdaad, je vermoeden is juist.

Ik vraag me af waarom je dit gebruikt:
PHP:
//js
'document.' + fName + '.' + fMail + '.value'

Dit zou wel moeten werken:
PHP:
//js
document.fName.fMail.value

Je kan dit zegmaar doen zonder dat het strings zijn.


Wat overgens veel mooier is: geef alle input velden die je wilt controleren een id. Geef dan via je functie alle id's door, die je dan met document.getElementById(hetid).value kan benaderen.

iets in deze richting:
PHP:
//js

//hier je eigen obligate-functie!


function CheckInputs(input1,input2,input3,input4,input5){

for(i=0;i<arguments.length;i++){
    if(!obligate(document.getElementById(argument[i])){
        alert('het inputveld met id ' + argument[i] + ' is leeg!');
    }
}

}
nu is dit even een snel voorbeeldje, maar je snapt het plan. Wat je bijvoorbeeld zou kunnen doen is in plaats van 20 input-parameters hebben, een array doorsturen, en een soortgelijke vergelijking maken.



Ohja, en de eval() functie maakt van een string een getal. Wordt meestal echter misbruikt. Je kan meestal beter 'parseInt' gebruiken.


:thumb:
 
Bedankt

Bedankt voor de hulp Vegras,

Na nog een tweetal uren zoeken is het dan toch gelukt, ik werk nu idd met de ID's en 'k begin eindelijk een beetje te begrijpen hoe de verwijzing gebeurt.

Ook bedankt voor de tip van de array, maa ik ging dit toch al zo proberen ;)

Groeten

Deckhengst

PS: Als het script volledig af is post ik het hier wel even, mss heeft iemand anders er nog wat aan.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan