script Antwoord formulier

Status
Niet open voor verdere reacties.

the cable guy

Gebruiker
Lid geworden
18 jun 2001
Berichten
377
Hallo,

Zou iemand even kunnen kijken naar onderstaand script?

De bedoeling is dat er bij een vraag automatisch een mail word gestuurd naar het ingevoerde mailadres. Maar na testen werkt hij niet.

Iemand een idee waar de fout(en) zit(ten)?

Alvast bedankt.

HTML:
<HTML>
<HEAD>
<script type="text/javascript">
function aan(cid){
document.getElementById(cid).style.display="inline"}
function uit(cid){
document.getElementById(cid).style.display="none"}
</script>

<script type="text/javascript">
function invoercontrole(){
var controle;

// 1. controleren op een leeg veld
if (document.formulier.tekstveld1.value == "")
{document.getElementById(11).style.display="inline"; controle='FOUT';}
if (document.formulier.tekstveld1.value !== "")
{document.getElementById(11).style.display="none"; controle='OK';}

// 2. controleren op een geldig emailadres
atteken=document.formulier.emailveld.value.indexOf("@");
puntteken=document.formulier.emailveld.value.lastIndexOf(".");
compleet=document.formulier.emailveld.value.length-1;
if (atteken<1 || puntteken-atteken<2 || compleet-puntteken>3 || compleet-puntteken<2)
{document.getElementById(21).style.display="inline"; controle='FOUT';}
else {document.getElementById(21).style.display="none"; controle='OK';}

// 3. controleren indien een keuzerondje ingevuld werd
var radiokeuze = 'niet';
for (radioteller = 0; radioteller < document.formulier.rondje.length; radioteller++)
{if (document.formulier.rondje[radioteller].checked){radiokeuze = 'wel';}}
if (radiokeuze=='niet')
{document.getElementById(41).style.display="inline"; controle='FOUT';}
else {document.getElementById(41).style.display="none"; controle='OK';}

// 4. controleren indien een aankruisvakje ingevuld werd
var aankruisvakje = 'niet';
if (document.formulier.keuze_a.checked){aankruisvakje = 'wel';}
if (document.formulier.keuze_b.checked){aankruisvakje = 'wel';}
if (aankruisvakje=='niet')
{document.getElementById(61).style.display="inline"; controle='FOUT';}
else {document.getElementById(61).style.display="none"; controle='OK';}

// 5. controleren op een leeg commentaarvak
if (document.formulier.commentaar.value == "")
{document.getElementById(71).style.display="inline"; controle='FOUT';}
if (document.formulier.commentaar.value !== "")
{document.getElementById(71).style.display="none"; controle='OK';}

if (controle=='OK'){document.formulier.submit(); return true;}
else {return false;}
} // einde functie invoercontrole()
</script>

</HEAD>

<BODY>
<form name="formulier" action="mailto:info@arku.nl?subject=formulier" method="post"
enctype="text/plain">
Naam <br>
<input type="text" name="tekstveld1" onblur="uit(1)" onfocus="aan(1);uit(11)">
<span id="1" style="display:none"><img src="info.gif"> info bij tekstveld 1</span>
<span id="11" style="display:none"><img src="vraag.gif"> dit veld is leeg</span>
<br>
Adres <br>
<input type="text" name="emailveld" onblur="uit(2)" onfocus="aan(2);uit(21)">
<span id="2" style="display:none"><img src="info.gif"> info bij emailveld</span>
<span id="21" style="display:none"><img src="vraag.gif"> geen geldig emailadres</span>
<br>

keuzerondjes <br>
<input type="radio" name="rondje" value="1" onblur="uit(3)" onfocus="aan(3);uit(41)"> Kunststof Kozijnen
<span id="3" style="display:none"><img src="info.gif"> info bij keuze 1</span>
<br>

<input type="radio" name="rondje" value="2" onblur="uit(4)" onfocus="aan(4);uit(41)"> Garagedeuren
<span id="4" style="display:none"><img src="info.gif"> info bij keuze 2</span>
<span id="41" style="display:none"><img src="vraag.gif"> geen keuze gemaakt</span>
<br>

<input type="radio" name="rondje" value="2" onblur="uit(4)" onfocus="aan(4);uit(41)"> Decodeck
<span id="4" style="display:none"><img src="info.gif"> info bij keuze 2</span>
<span id="41" style="display:none"><img src="vraag.gif"> geen keuze gemaakt</span>
<br>


Informatieaanvraag <br>
<textarea name="commentaarvak" cols="30" rows="5" wrap="virtual" onblur="uit(7)" onfocus="aan(7);uit(71);"></textarea><br>
<span id="7" style="display:none"><img src="info.gif"> info bij het commentaarvak</span>
<span id="71" style="display:none"><img src="vraag.gif"> geen commentaar ingevuld</span>

<input type="button" value="versturen" onclick="invoercontrole()">
<input type="reset" value="wissen">
</form>

</BODY>
</HTML>
 
Laatst bewerkt door een moderator:
Ik denk dat het probleem zit in document.formulier.submit() aangezien ik dat zelf nog niet heb kunnen doen werken.
Wat kan je dan wel proberen?
Die controle bij het submitten uitvoeren, en indien er fouten instaan het submitten tegengaan.
Het principe van een formulier verzenden werkt een beetje als een link. Je vraagt tenslotte gewoon een nieuwe pagina op...
Een link kan je zo 'tegengaan':
HTML:
<a href="ergens://op_de/wereld.htm" onclick="return false;">Deze link werkt niet</a>

Hoe pas je dit nu toe op je formulier?
1. de controlefunctie
Aangezien we tijdens het submitten gaan controleren, hoeven we zelf niet meer expliciet de submit uit te voeren. Verander
Code:
if (controle=='OK'){document.formulier.submit(); return true;}
else {return false;}
naar
Code:
if (controle=='OK')
    return true;
return false;
Zo wordt het resultaat van die functie enkel een boolean, die true is als mag doorgegaan worden, en false wanneer niet.
2. het formulier
Je kan deze functie nu op 2 manieren aanroepen. Maar voor beide manieren heeft je formulier wel en submitknop nodig ;)
1. in de formtag
HTML:
<form name="formulier" onsubmit="return invoercontrole();">
2. in de submitknop
HTML:
<input type="submit" value="versturen" onclick="return invoercontrole();" />
Het resultaat is hetzelfde, de boolean die door je controlefunctie wordt gemaakt, wordt door je formulier gereturned. Net zoals in het voorbeeld van de link zal bij return false niets worden verstuurd :thumb:

--Johan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan