Ik ben voor school (en voor vrienden) bezig met een website waarop het mogelijk moet zijn om te registreren.
Na 3 jaar lang in ASP.NET websites te ontwikkelen, moet ik dit voor m'n opleiding nu in php doen.
Op zich geen probleem, op 1 groot nadeel na: geen custom validators.
Required field validators en dergelijke waren al snel vervangen door jquery, maar het controleren of een e-mail adres reeds geregistreerd is moet gebeuren met ajax.
De ajax code was dankzij w3c schools vrij snel in elkaar gezet, maar dan het grote probleem: de form tegenhouden als het e-mailadres wel degelijk bestaat...
Op internet heb ik gevonden dat dit moet aan de hand van onsubmit="return functie()" toe te voegen aan de form tag, en de functie true te laten returnen als het formulier mag uitgevoerd worden.
Dit is de relevante code:
Echter, dit blijkt niet te werken, de form wordt ook niet uitgevoerd als de functie wel degelijk true returnt.
Ziet iemand een fout in mijn code?
Hier kan je de code (niet) zien werken.
Als er verder nog iemand te veel tijd en voldoende kennis heeft, van de foutmeldingen van de w3c-validator snap ik ook niets (behalve die in verband met de iframes).
Na 3 jaar lang in ASP.NET websites te ontwikkelen, moet ik dit voor m'n opleiding nu in php doen.
Op zich geen probleem, op 1 groot nadeel na: geen custom validators.
Required field validators en dergelijke waren al snel vervangen door jquery, maar het controleren of een e-mail adres reeds geregistreerd is moet gebeuren met ajax.
De ajax code was dankzij w3c schools vrij snel in elkaar gezet, maar dan het grote probleem: de form tegenhouden als het e-mailadres wel degelijk bestaat...
Op internet heb ik gevonden dat dit moet aan de hand van onsubmit="return functie()" toe te voegen aan de form tag, en de functie true te laten returnen als het formulier mag uitgevoerd worden.
Dit is de relevante code:
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
| function emailValidate() { var xmlhttp; if (window.XMLHttpRequest) {// code for IE7+, Firefox, Chrome, Opera, Safari xmlhttp=new XMLHttpRequest(); } else {// code for IE6, IE5 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); } var email = document.getElementById("email").value; xmlhttp.open("POST","checkemail.php",true); xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded"); xmlhttp.send("email="+email); var ok = false; xmlhttp.onreadystatechange = function() { if (xmlhttp.readyState == 4 && xmlhttp.status == 200) { if (xmlhttp.responseText==1) { document.getElementById("email").setAttribute("class", "error"); document.getElementById("mailexists").innerHTML = "<?php echo REG_MAILEXISTS?>"; //document.getElementById("btnsubmit").disabled=true; ok = false; } else { ok = true; document.getElementById("mailexists").innerHTML = ""; //document.getElementById("btnsubmit").disabled=false; } } } return ok; }; |
HTML:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
| <form method="post" action=".\register.php" id="frmRegister" class="userform" onsubmit="return emailValidate()"> <fieldset> <legend>Register</legend> <label for="email" ><?php echo REG_TXTEMAIL ?></label> <input name="email" type="text" size="50" maxlength="100" id="email" onblur="emailValidate();"/> <label for="email" id="mailexists" class="mailexists"></label> <div class="clear"></div> <label for="password"><?php echo REG_TXTPASSWORD ?></label> <input name="password" type="password" size="50" maxlength="100" id="password"/> <label for="password2"><?php echo REG_TXTRETYPEPASSWORD ?></label> <input name="password2" type="password" size="50" maxlength="100" id="password2"/> <label for="name"><?php echo REG_TXTNAME ?></label> <input name="name" type="text" size="50" maxlength="100" id="name"/> <label for="city"><?php echo REG_TXTCITY ?></label> <input name="city" type="text" size="50" maxlength="100" id="city"/> <label for="country"><?php echo REG_TXTCOUNTRY ?></label> <select name="country" id="country"> <?php echo GenerateDdlCountries() ?> </select> <input name="submit" type="submit" value="<?php echo REG_BTNSUBMIT ?>" class="button" id="btnsubmit"/> </fieldset> <?php function GenerateDdlCountries() { return(" <option value='' selected='selected'>".GLB_SELECTCOUNTRY."</option> <option value='Belgium'>".GLB_BELGIUM."</option> ... <option value='Zimbabwe'>Zimbabwe</option>"); } ?> </form> |
Echter, dit blijkt niet te werken, de form wordt ook niet uitgevoerd als de functie wel degelijk true returnt.
Ziet iemand een fout in mijn code?
Hier kan je de code (niet) zien werken.
Als er verder nog iemand te veel tijd en voldoende kennis heeft, van de foutmeldingen van de w3c-validator snap ik ook niets (behalve die in verband met de iframes).