2009-08-04 8 views
0
var validator = $("#fullRegForm").validate({ 
    errorLabelContainer: "#error_container", 
    wrapper: "li", 
    errorClass: "reg_error", 
    rules: { 
     fr_birthdate: { 
      date: true, 
      required: true, 
      minimumAge: true 
     }, 
     fr_consent: { 
      required: function(element) { 
       var age = getAge($("#fr_birthdate").val()); 
       if(age >=13 && age < 18){ 
        $("#reg_consent").show(); 
       } else { 
        $("#reg_consent").hide(); 
       } 
      } 
     } 
    }, 
    messages: { 
    fr_birthdate: { 
     date: "Please enter a valid date of birth", 
     required: "Please enter date of birth", 
     minimumAge: "under 13 years old are not allowed" 
    }, 
    fr_consent: "13-17 years of age must have a parental consent" 
    } 

Je utilise un conteneur pour afficher les erreurs dans le formulaire .. mais le message pour le message fr_consent affichant encore même l'entrée d'âge a plus de 18 ans. J'essaie d'utiliser les mêmes règles mais n'utilise pas de conteneur d'erreur et cela fonctionne parfaitement. Est-ce que j'ai manqué quelque chose sur mon code?jquery validation de la dépendance

getAge:

function getAge(birthDate) { 
    var raw_date = birthDate; 
    var dobArr = raw_date.split("/"); 
    var dob = new Date(); 
    dob.setFullYear(dobArr[2], dobArr[0]-1, dobArr[1]); 

    var now = new Date(); 

    function isLeap(year) { 
    return (((year % 4)==0) && ((year % 100)!=0) || ((year % 400)==0)); 
    } 

    // days since the birthdate  
    var days = Math.floor((now.getTime() - dob.getTime())/1000/60/60/24); 
    var age = 0; 
    // iterate the years 
    for (var y = dob.getFullYear(); y <= now.getFullYear(); y++){ 
    var daysInYear = isLeap(y) ? 366 : 365; 
     if (days >= daysInYear){ 
      days -= daysInYear; 
      age++; 
      // increment the age only if there are available enough days for the year. 
     } 
    } 
    return age; 
} 
+0

à quoi ressemble getAge()? –

Répondre

0

essayer:

var age = getAge($("#fr_birthdate").val() * 1); 
if(age < 18){ 
    if(age >= 13){ 
     $("#reg_consent").show(); 
    } 
} 
0

Ok, merci pour coller le code getAge, semble fonctionner très bien.

La fonction pour required doit probablement renvoyer un booléen. Javascript revient, je pense, faux par défaut. Donc, pour le moment, vous revenez toujours faux

if(age >=13 && age < 18){ 
       $("#reg_consent").show(); 
       return false; 
      } else { 
       $("#reg_consent").hide(); 
       return true; 
      } 
+0

Merci pour votre réponse, je vais essayer quand je rentre à la maison merci. – text