Huller i min validering
Jeg har en formular, som brugerne kan udfylde med diverse informationer. Valideringen går på at brugeren skal være over 18 år, og hvis personen ikke er det, skal de have deres forældres tilladelse. Jeg bruger WordPress, og har brugt cformsII som plugin til at lave formen. Scriptet nedenfor er lavet som en overlapning til cformsII's valiering.$j = jQuery.noConflict();
$j(document).ready(function() {
// TJEK ALDER
var jVal = {
'tjekAge': function() {
var age = 18;
var dobArr = $j('#cf_field_8').val().split("/");
var dob = new Date();
dob.getDate(dobArr[0], dobArr[1] - 1, dobArr[2]);
d = dobArr[0];
m = dobArr[1];
y = dobArr[2];
var mydate = new Date();
mydate.setFullYear(y, m - 1, d);
var currdate = new Date();
currdate.setFullYear(currdate.getFullYear() - age);
if (((currdate - mydate) < 0) && ($j("#cf_field_9").is(':checked') === false)) {
//Brugeren er under 18 og mangler tilladelse
$j("#li--9").append("<p class='pMsg'>Du er under 18 \u00E5r, og skal derfor have dine for\346ldres tilladelse.</p>");
return false;
}
else if (((currdate - mydate) < 0) && ($j("#cf_field_9").is(':checked') === true)) {
//Brugeren er ikke gammel nok, men har en tilladelse
$j("#sendbutton").attr('disabled', false);
$j("#li--9 p").remove();
return true;
}
else if ((currdate - mydate) > 0) {
//alert ("Du er gammel nok");
$j("#sendbutton").attr('disabled', false);
$j(".pMsg").remove();
return true;
}
else if ((currdate - mydate) === 0) {
//Brugeren er gammel nok og har endda fødselsdag
$j("#li--9 p").remove();
$j("#sendbutton").attr('disabled', false);
return true;
}
else if (mydate == 'Invalid Date') {
return false;
}
else {
//alert ("Error");
alert("Fejl - Vi arbejder p\u00E5 sagen!");
return false;
}
}
};
$j('#cf_field_8').change(jVal.tjekAge);
$j('#cf_field_9').change(jVal.tjekAge);
});
I praksis fungerer det oftest fint, men flere har haft problemer med det. Brugerne har oplevet, at selvom de har udfyldt formen korrekt, så får de ikke lov til at sende formen afsted. Dette skyldes:
[code]$j("#sendbutton").attr('disabled', false);[/code]
som fungerer som stopklods, for at cformsII's validering ikke bliver aktiveret, før mit script har tjekket om alder og forældres tilladelse er korrekt.
Mit spørgsmål går så på, om jeg har overset noget i koden. Præcist ved jeg ikke, hvad det er brugerne gør, siden at koden ikke agerer korrekt. Har jeg overset nogle mulige udfald, som ikke er inkluderet i kode, og derfor bliver brugeres informationer ikke valideret korrekt?
Siden kan ses på http://teenarbejdet.dk/lejrtilmelding
Ovenstående kode er dog ikke inkluderet på nuværende tidspunkt, eftersom den laver mere ravage end gavn.
Alle forslag er velkommen!