проверка зависимости jquery - PullRequest
       8

проверка зависимости jquery

1 голос
/ 04 августа 2009
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"
   }

Я использую контейнер для отображения ошибок в форме ... но сообщение для сообщения fr_consent, по-прежнему отображающее даже введенный возраст, старше 18 лет. Я пытаюсь использовать те же правила, но не с использованием контейнера ошибок, и он работает отлично. Я что-то пропустил в своем коде?

СеЬАд:

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;
}

Ответы [ 2 ]

0 голосов
/ 04 августа 2009

Хорошо, спасибо, что вставили код getAge, похоже, работает нормально.

Функция для требуемого, вероятно, должна возвращать логическое значение. Javascript возвращает, я думаю, по умолчанию false. Так что в данный момент вы всегда возвращаете false

if(age >=13 && age < 18){
               $("#reg_consent").show();
               return false;
          } else {
              $("#reg_consent").hide();
              return true;
          }
0 голосов
/ 04 августа 2009

попробовать:

 var age = getAge($("#fr_birthdate").val() * 1);
 if(age < 18){
    if(age >= 13){
       $("#reg_consent").show();
    }
 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...