2009-08-04 21 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" 
    } 

私はフォームのエラーを表示するためにコンテナを使用しますが、年齢の入力が表示されてもfr_consentメッセージのメッセージは18歳以上です。私は同じルールを使用しようとするが、エラーコンテナを使用しないと、それは完全に動作します。私は自分のコードで何かを逃したのですか?jquery依存関係の検証

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

getAge()はどのように見えますか? –

答えて

0

試してみてください。

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

[OK]を、getAgeコードを貼り付けるためのおかげで、正常に動作するようです。

必須の関数は、おそらくブール値を返す必要があります。 Javascriptはデフォルトではfalseを返します。ですから、あなたはいつも虚偽を返しています。

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

あなたの答えをありがとう、私は家に感謝したときにそれを試してみましょう。 – text

関連する問題