Dubbel versturen van een formulier voorkomen I:
'click' afvangen

Een (mail-)formulier is een goede manier om de bezoekers van je website in de gelegenheid te stellen om te reageren op de inhoud, informatie te vragen, een bestelling te plaatsen, enzovoort.
Het versturen van zo'n formulier gebeurt door een klik op een 'submit' button. Natuurlijk is het niet de bedoeling dat er meer dan eenmaal op de submit-button wordt geklikt. Anders krijg je twee mails, dubbele bestellingen of meer. Ook dubbelklikken op een submit-button is dus ongewenst.

Je kunt dit voorkomen door de submit-button te inactief te maken zodra er op geklikt is.

Een voorbeeld:
Hieronder zie je een eenvoudig mailformulier. Als je op de knop "versturen" klikt, verschijnt er een alert die meldt dat het bericht is verstuurd. Ook zie je dat de knop "versturen" grijs is geworden: Hij is uitgeschakeld (disabled). Het is voor de gebruiker dus niet mogelijk om het bericht meer dan éénmaal te versturen.

Voorbeeld mailformulier
Bericht:
afzender:
e-mail:
 

In dit voorbeeld wordt gereageerd op de klik van de muis op de submit-button. Dat doe je door onclick="this.disabled = true;" op te nemen in de <input>-tag waarmee je de submit-button in je formulier zet.
De code van het voorbeeld-formulier staat onderaan deze bladzijde.

Gebruik:

De code ziet er als volgt uit:
 
(Zet dit in de <BODY>, op de plaats waar je het nodig hebt).

<form>
<table border="1" cellspacing="1" cellpadding="5" align="center" bgcolor="#DDFFDD" frame="box" rules="none"><tr>
<td align="center" colspan="2"><b>Voorbeeld mailformulier</b></td>
</tr><tr>
<td colspan="2">Bericht:<br><textarea rows="4" cols="40" onfocus="doReset()">
He, moet je horen,
Op Ben's Hobbyhoekje vind je veel handige dingen voor je eigen website!
</textarea></td>
</tr><tr>
<td align="right">afzender:</td><td><input type="text"size="25" maxlength="50" onfocus="doReset()"></td>
</tr><tr>
<td align="right">e-mail:</td><td><input type="text"size="25" maxlength="50" onfocus="doReset()"></td>
</tr><tr>
<td align="center" colspan="2">
<input id="submitKnop" type="submit" style="font-weight:bold" value="Versturen" onclick="JavaScript:this.disabled=true;alert('Dit formulier heeft geen functie')">
&nbsp;
<input type="reset" value="Opnieuw..."></td></tr></table></form>
<script>
function doReset() {
  document.getElementById('submitKnop').disabled=false
}
</script>

Opmerking:
 
Er zijn ook andere mogelijkheden om te voorkomen dat meer dan eens op de 'submit' button wordt geklikt. Zie daarvoor het item Dubbel versturen van een formulier voorkomen II: 'submit' afvangen.

 
terug

html-255; Laatste wijziging: 17 juni 2020