checkbox verplicht invullen in emailformulier

Status
Niet open voor verdere reacties.

merlijn16

Gebruiker
Lid geworden
2 mrt 2010
Berichten
132
Hoi,
Ik krijg het wel voor elkaar om verplichte invulvelden in emailformulier te maken, echter dit werkt niet met de checkbox.

Weet iemand een code om checkbox verplicht in te vullen (is met betrekking tot het gelezen hebben van algemene voorwaarden).
Wil dat formulier pas verzonden wordt als checkbox aangeklikt is.
Kan iemand mij hiermee helpen?

Dit is de code die in het formulier staat, enkel dit stukje werkt niet: if(form.alg_voorwaarden.value=="")naw=naw+"Algemene voorwaarden, ";

Code:
<script type="text/javascript">
var naw="";
var form="";
function controle(form)
{
var naw="";

if(form.voornaam.value=="")naw=naw+"Voornaam, "; 
if(form.achternaam.value=="")naw=naw+"Naam, ";
if(form.straat.value=="")naw=naw+"Straat, ";
if(form.huisnummer.value=="")naw=naw+"Huisnummer, ";
if(form.postcode.value=="")naw=naw+"Postcode, ";
if(form.woonplaats.value=="")naw=naw+"Woonplaats, ";
if(form.land.value=="")naw=naw+"Land, ";
if(form.email.value=="")naw=naw+"E-mail, ";
if(form.tel.value=="")naw=naw+"Telefoon, ";
if(form.alg_voorwaarden.value=="")naw=naw+"Algemene voorwaarden, ";
if(naw!="")
    {
    naw=naw.substring(0,naw.length-2);
    naw="De volgende velden zijn nog niet ingevuld:\n" + naw;
    alert(naw); 
    return false;
    }
else{
    return true;
    }
}
</script>

En dit is het stukje uit de pagina:

HTML:
<tr><td colspan="2">
<p><font face="Arial" color="#000000"><b>Algemene Voorwaarden:</b><br />
Ik heb de algemene voorwaarden gelezen en ik ga akkoord: <input type="checkbox" name="alg_voorwaarden" value="ja" /><br /><br />
</font></p>
</td></tr>
 
Je wilt van een checkbox niet de waarde controleren maar de "checked" property:
[js]if(form.alg_voorwaarden.checked==false)naw=naw+"Algemene voorwaarden, ";[/js]

Overigens zal het (PHP-)script dat het formulier verwerkt ook moeten controleren of de checkbox is aangevinkt (en alle andere relevante controles). Een Javascript-controle is namelijk vrij eenvoudig te omzeilen.
 
Bedankt Supersnail, het werkt :thumb:
Ben hier dagen mee aan het puzzelen geweest.

weet je misschien ook hoe ik zo'n textarea met onlyread erin zet waarin de algemene voorwaarden te lezen zijn? Had dit nu opgelost met een link naar pagina. Heb liever zo'n textarea.
 
HTML:
<textarea rows="x" cols="y" readonly="readonly">Hier de algemene voorwaarden</textarea>
Waarbij je voor x en y nog even goede waardes moet kiezen.
 
tjonge, 1 zo'n regeltje.... ben ik dus al tijden mee aan het prutsen. Elke keer vloog mijn lay-out uit elkaar.

Deze werkt :thumb: wederom bedankt supersnail

Weet je misschien ook nog hoe ik bijlage mee kan laten sturen?

deze code heb ik in de pagina. Maar is niet voldoende.

HTML:
<tr>
    <td>&nbsp;&nbsp;&nbsp;&nbsp;<font face="Arial" color="#000000"> Selecteer een file om mee te sturen:<br /></font></td>
    <td><input type="file" name="uploaded_file" size="34" /></td>
</tr>

deze code heb ik er ook in staan
Code:
<form onsubmit="return controle(this)" method="post" action="http://www.website.nl/cgi-bin/cgiemail/vacatureform.txt" enctype="multipart/form-data">
 
Op die manier zou het toch moeten werken (ervan uitgaande dat vacatureform.txt om kan gaan met geüploade bestanden).
 
Bedankt voor je reactie,

Ik krijg deze foutmelding na verzenden:


Error
No email was sent due to an error.

403 No variable substitutions in template

Template filename hidden for security reasons

cgiemail 1.6


Dit is de code van vacatureform.txt
Code:
From: [email]
To: naam@website.nl 
Subject: Vacature

Bedrijfsnaam: [bedrijfsnaam]
Naam contactpersoon: [naam_contactpersoon]
Woonplaats: [woonplaats]
Land: [land]
E-mail:[email]
Telefoon: [tel]

Vraag of opmerking: [vraag]

[uploaded_file]

Enig idee waar de fout zit?


edit: ik krijg de foutmelding vanwege dit stukje tekst: enctype="multipart/form-data"
Dit staat in dit stukje code:
<form onsubmit="return controle(this)" method="post" action="http://www.website.nl/cgi-bin/cgiemail/vacatureform.txt" enctype="multipart/form-data">

Ik kan het formulier dus nu wel verzenden zonder foutmelding als ik dit weglaat: enctype="multipart/form-data" , echter ontvang geen bijlage.
 
Laatst bewerkt:
bedankt supersnail,
wat voor soort formulier moet ik maken om wel bijlages te kunnen versturen?
Dan ga ik daar een poging toe doen.
 
Je kan het beste een ander script zoeken om het formulier te verwerken. Ik ben helaas niet zo bekend met dergelijke scripts (als ik er een nodig heb maak ik die zelf), dus je zal zelf even moeten kijken of je hostingprovider een dergelijk script aanbied en anders kan je met Google (zoeken naar "formmail", "attachment" en "free") dergelijke scripts vinden. Wel moet je er even op letten welke talen je hostingprovider ondersteunt (CGI, PHP).
 
wederom bedankt voor je reactie supersnail.
Ik heb een php emailformulier gevonden en mijn hostingprovider ondersteund php ook.
Echter ik ben niet thuis in php en voor ik vraag in php forum ga zetten zou ik graag willen weten of ik een php emailformulier in een xhtml website kan zetten, of moet ik dan een complete php website hebben?
 
Gaat het hier om een PHP-script dat de gegevens die via het formulier worden verstuurt verwerkt? Dat kan je gewoon gebruiken in een xhtml- (of gewone html-)website.
Als het PHP-script ook het formulier toont is het wat lastiger om te gebruiken.
 
bedankt voor je reactie.
Het ziet er een beetje hetzelfde uit zoals ik het formulier met cgi had.

Code staat in .html pagina en er zit een .txt bij.
Echter er zit ook een contact.php bij, geen idee wat dat is en wat ik daar mee moet. Ik kan deze niet openen.
Moet deze ook ergens op de server gezet worden?
Als ik dit formulier ga aanpassen, is deze dan geschikt om bijlages bij te voegen?

heb het hier bijgevoegd,
 

Bijlagen

zijn deze (radio) invulrondjes ook als verplicht invullen te maken?

HTML:
<tr>
	<td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<font face="Arial" color="#000000">* Land:</font></td> 
	<td><font face="Arial" color="#000000"><input type="radio" name="land" value="Nederland" />Nederland &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="land" value="België" />België &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="radio" name="land" value="Duitsland" />Duitsland</font></td>
</tr>

dit is de scriptcode bovenin pagina

Code:
<script type="text/javascript">
var naw="";
var form="";
function controle(form)
{
var naw="";

if(form.voornaam.value=="")naw=naw+"Voornaam, "; 
if(form.achternaam.value=="")naw=naw+"Naam, ";
if(form.straat.value=="")naw=naw+"Straat, ";
if(form.huisnummer.value=="")naw=naw+"Huisnummer, ";
if(form.postcode.value=="")naw=naw+"Postcode, ";
if(form.woonplaats.value=="")naw=naw+"Woonplaats, ";
if(form.land.value=="")naw=naw+"Land, ";
if(form.email.value=="")naw=naw+"E-mail, ";
if(form.tel.value=="")naw=naw+"Telefoon, ";
if(form.naam_certificaat.value=="")naw=naw+"Naam op certificaat, ";
if(form.alg_voorwaarden.checked==false)naw=naw+"Algemene voorwaarden, ";
if(naw!="")
    {
    naw=naw.substring(0,naw.length-2);
    naw="De volgende velden zijn nog niet ingevuld:\n" + naw;
    alert(naw); 
    return false;
    }
else{
    return true;
    }
}
</script>
 
Ik heb het even bekeken en het kan geen attachments versturen. Dat kan je zien als je contact.php opent (kan gewoon met een tekst editor, bijvoorbeeld kladblok). Het versturen van een attachment is wat minder rechttoe-rechtaan dan een tekstvak. Al kan je dit wel zelf toevoegen.

De radiobuttons controleren kan op deze manier:
[js]var radiochecked = false;
for (var i=0;i<form.land.length;i++)
{
if (form.land.checked == true)
{
radiochecked = true;
}
}
if (!radiochecked) naw=naw+"Land, ";[/js]
 
enorm bedankt voor je heldere uitleg, supersnail.

Ik heb nu dit staan:

[JS]
<script type="text/javascript">
var naw="";
var form="";
function controle(form)
{
var naw="";

if(form.voornaam.value=="")naw=naw+"Voornaam, ";
if(form.achternaam.value=="")naw=naw+"Naam, ";
if(form.straat.value=="")naw=naw+"Straat, ";
if(form.huisnummer.value=="")naw=naw+"Huisnummer, ";
if(form.postcode.value=="")naw=naw+"Postcode, ";
if(form.woonplaats.value=="")naw=naw+"Woonplaats, ";
var radiochecked = false;
for (var i=0;i<form.land.length;i++)
{
if (form.land.checked == true)
{
radiochecked = true;
}
}
if (!radiochecked) naw=naw+"Land, ";
if(form.email.value=="")naw=naw+"E-mail, ";
if(form.tel.value=="")naw=naw+"Telefoon, ";
if(form.naam_certificaat.value=="")naw=naw+"Naam op certificaat, ";
if(form.alg_voorwaarden.checked==false)naw=naw+"Algemene voorwaarden, ";
if(form.bedrijfsvestiging.checked==false)naw=naw+"Bedrijfsvestiging, ";
if(naw!="")
{
naw=naw.substring(0,naw.length-2);
naw="De volgende velden zijn nog niet ingevuld:\n" + naw;
alert(naw);
return false;
}
else{
return true;
}
}
</script>
[/JS]

de validator geeft nog een foutmelding.

Code:
Validation Output: 3 Errors 
 Line 38, Column 32: character ";" not allowed in attribute specification list 
for (var i=0;i<form.land.length;i++)✉ 
 Line 38, Column 32: element "form.land.length" undefined 
for (var i=0;i<form.land.length;i++)✉ 
You have used the element named above in your document, but the document type you are using does not define an element of that name. This error is often caused by: 

•incorrect use of the "Strict" document type with a document that uses frames (e.g. you must use the "Frameset" document type to get the "<frameset>" element),
•by using vendor proprietary extensions such as "<spacer>" or "<marquee>" (this is usually fixed by using CSS to achieve the desired effect instead).
•by using upper-case tags in XHTML (in XHTML attributes and elements must be all lower-case).
 Line 62, Column 9: end tag for "form.land.length" omitted, but OMITTAG NO was specified 
</script>✉ 
You may have neglected to close an element, or perhaps you meant to "self-close" an element, that is, ending it with "/>" instead of ">". 
 Line 38, Column 15: start tag was here 
for (var i=0;i<form.land.length;i++)

mijn doc type is: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

Kan zelf de fout niet vinden.


edit: die pagina over php formulier ga ik bestuderen. Bedankt! :thumb:
 
Laatst bewerkt:
Ik heb even gegoogled op de eerste foutmelding en kwam zo de oplossing tegen.
[js]<script type="text/javascript">
//<![CDATA[
var naw="";
var form="";
function controle(form)
{
var naw="";

if(form.voornaam.value=="")naw=naw+"Voornaam, ";
if(form.achternaam.value=="")naw=naw+"Naam, ";
if(form.straat.value=="")naw=naw+"Straat, ";
if(form.huisnummer.value=="")naw=naw+"Huisnummer, ";
if(form.postcode.value=="")naw=naw+"Postcode, ";
if(form.woonplaats.value=="")naw=naw+"Woonplaats, ";
var radiochecked = false;
for (var i=0;i<form.land.length;i++)
{
if (form.land.checked == true)
{
radiochecked = true;
}
}
if (!radiochecked) naw=naw+"Land, ";
if(form.email.value=="")naw=naw+"E-mail, ";
if(form.tel.value=="")naw=naw+"Telefoon, ";
if(form.naam_certificaat.value=="")naw=naw+"Naam op certificaat, ";
if(form.alg_voorwaarden.checked==false)naw=naw+"Algemene voorwaarden, ";
if(form.bedrijfsvestiging.checked==false)naw=naw+"Bedrijfsvestiging, ";
if(naw!="")
{
naw=naw.substring(0,naw.length-2);
naw="De volgende velden zijn nog niet ingevuld:\n" + naw;
alert(naw);
return false;
}
else{
return true;
}
}
//]]>
</script>[/js]
 
Ontzettend bedankt voor je hulp supersnail. Het is gelukt en ik ben weer een stuk wijzer geworden. :thumb:
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan