Invoercontrole

Status
Niet open voor verdere reacties.

FrankySigurdson

Nieuwe gebruiker
Lid geworden
22 dec 2008
Berichten
3
Hey iedereen,
ik ben nieuw hier.
ik ben aan een website aan het werken en heb volgende code om de invoer van een vak te controleren:
bij de onsubmit van mijn formulier gebruik ik: onSubmit="return checkVak(this)"

// JScript source code
var browser=navigator.appName;
var IE = "Microsoft Internet Explorer";

function melding(label, tekst)
{
if (browser == IE){
document.getElementById(label).innerText = tekst;
} else {
document.getElementById(label).textContent = tekst;
}
}

function checkVak(form){
ok = true;

vakopp = document.getElementById("oppervlakte");

if (vakopp.value == null || vakopp.value == "" || isNaN(vakopp)){
melding("foutopp", "Getal invullen a.u.b. !");
alert("Vul een getal in waar het nodig is!");
ok = false;
}
alert("ok = " . ok);
return ok;
}

In firefox:
ik krijg de alert("Vul een getal in waar het nodig is!")
Ook krijg ik een 2e alert maar deze zegt enkel: undefined

en dan kom ik terug op mijn huidige pagina terecht (wat de bedoeling is) maar de melding is ook nergens weergegeven.

In IE:
Er wordt onmiddellijk doorverwezen naar de pagina waar het formulier naar doorverwijst wat dus niet de bedoeling is..


Kan iemand me misschien helpen?
:(
 
Laatst bewerkt:
Ik heb je script niet uitgetest, maar dit ziet er vreemd uit:

Code:
if (browser == IE)
{
  document.getElementById(label).innerText = tekst;
}
else
{
  document.getElementById(label).textContent = tekst;
}

Om te beginnen, browser detectie is evil. Daarnaast is het veel beter om in dit geval element.innerHTML te gebruiken in plaats van kiezen tussen innerText en textContent. Praktisch alle browsers ondersteunen dit.

De laatste alert geeft undefined omdat je waarschijnlijk te veel met PHP hebt gewerkt :p
Er staat:
Code:
alert("ok = " . ok);

Maar in javascript moet dat gewoon zo:
Code:
alert("ok = " + ok);


Verder zou ik dit herschijven:
Code:
if (vakopp.value == null || vakopp.value == "" || isNaN(vakopp))
{

Naar dit:
Code:
if (!vakopp || !vakopp.value || isNaN(vakopp))
{
 
Ik heb er nu het volgende van gemaakt :

Code:
// JScript source code
	var browser=navigator.appName;
	var IE = "Microsoft Internet Explorer";

	function melding(label, tekst)
	{		
		alert("test4");
		//if (browser == IE){
			//document.getElementById(label).innerText = tekst;
		//} else {
			document.getElementById(label).innerHTML = tekst;
		//}
	}
	
	function checkVak(form){
		alert ("test");
		
		vakopp = document.getElementById("oppervlakte");
		vakverm = document.getElementById("vermogen");		
		
		alert ("test2");
		if (!vakopp || !vakopp.value || isNaN(vakopp)){	
			alert("test3");
			melding("foutopp", "Getal invullen a.u.b. !");
			alert("test5");
			ok = false;
		}else{
			ok = true;
		}
		alert("ok = " + ok);
		return ok;
	}

Ik krijg alert test1 tot test4 en dan gaat hij weer onmiddellijk naar de volgende pagina
dus ik zie nergens het resultaat van de melding
dus het loopt nog steeds fout..
in men form heb ik dit staan :

Code:
onSubmit = "return checkVak(this)"

Kan je hier iets mee doen?

Alvast bedankt!!
ik ben ten einde raad :(
 
Hmm het enige wat ik me voor kan stellen is dat het element met het id "foutopp" niet bestaat. Kun je ook je HTML laten zien? :)
 
Oh neee!!!

ik had bij dit element de naam als foutopp toegekend..
het id had ik nog niet toegekend... ik ga dit straks controleren wanneer ik thuis ben

wat een domme fout!!!

typisch aan javascript dat je zulke fouten niet onmiddellijk ziet.

alvast bedankt!!!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan