2011-05-08 115 views
4

我有一個textfield用戶輸入日期格式爲mm/dd/yyyy格式。我想根據他們輸入的dob爲用戶自動填充age字段。jquery基於dob計算年齡

當用戶跳出dob字段時,應填充該年齡段textfield

這是什麼jQuery的方式呢?

回答

3

請參閱Calculate age in JavaScript函數來計算適當處理閏年的年齡。

然後,您可以使用該功能來計算用戶的年齡,像這樣:

var age = getAge(new Date($("#date").value())); 

..然後年齡字段設置爲數字:

$("#date").bind("blur", function() { $("#age").value(age) }); 
+1

什麼閏年? – icktoofay 2011-05-08 01:30:29

+0

固定(有點懶惰;) – rfw 2011-05-08 01:36:14

0

在您的文本框的模糊,您必須計算它們輸入的內容和now()之間的日期差異。

$('#birthdate').blur(function() { 
    $("#ageTextBox").val(getAge(parseDate($('#birthdate').val()))); 
}); 

function getAge(birthDate) { 
    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() - birthDate.getTime())/1000/60/60/24); 
    var age = 0; 
    // iterate the years 
    for (var y = birthDate.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

你應該提到該代碼的來源:) – Omnipresent 2011-05-08 02:01:26

0

嘗試jquery.dates plugin

var d = $("#mytextboxID").dateDiff("unit", date); 
+0

這個插件看起來已經死了。該網站目前處於離線狀態。 – 2017-01-03 01:33:14

0

我想出了這個簡單的解決方案。這是一個jQuery change函數,它將值發送到輸入年齡字段。

$(document).ready(function() { 

    $('#dob input').change(function() { 

     var today = new Date(); 
     var dd = Number(today.getDate()); 
     var mm = Number(today.getMonth() + 1); 

     var yyyy = Number(today.getFullYear()); 

     var myBD = $('#dob input').val(); 
     var myBDM = Number(myBD.split("/")[0]) 
     var myBDD = Number(myBD.split("/")[1]) 
     var myBDY = Number(myBD.split("/")[2]) 
     var age = yyyy - myBDY; 

     if (mm < myBDM) { 
      age = age - 1; 
     } else if (mm == myBDM && dd < myBDD) { 
      age = age - 1; 
     } 

     $('#age input').val(age); 
    }); 

}); 
0

這裏我們通過考慮開始和結束日期來測試它。您也可以用它來計算月份和日期的年齡。

var end = new Date(2015, 09, 02, 00, 0, 0, 0), 
    begin = new Date(2015, 09, 1, 00, 0, 0, 0), 
    e = new Date(end), 
    b = new Date(begin), 
    bMonth = b.getMonth(), 
    bYear = b.getFullYear(), 
    eYear = e.getFullYear(), 
    eMonth = e.getMonth(), 
    bDay = b.getDate(), 
    eDay = e.getDate() + 1; 

if ((eMonth == 0) || (eMonth == 2) || (eMonth == 4) || (eMonth == 6) || 
    (eMonth == 7) || (eMonth == 9) || (eMonth == 11)) { 
    var eDays = 31; 
} 

if ((eMonth == 3) || (eMonth == 5) || (eMonth == 8) || (eMonth == 10)) { 
    var eDays = 30; 
} 

if (eMonth == 1 && ((eYear % 4 == 0) && (eYear % 100 != 0)) || 
    (eYear % 400 == 0)) { 
    var eDays = 29; 
} 

if (eMonth == 1 && ((eYear % 4 != 0) || (eYear % 100 == 0))) { 
    var eDays = 28; 
} 

if ((bMonth == 0) || (bMonth == 2) || (bMonth == 4) || (bMonth == 6) || 
    (bMonth == 7) || (bMonth == 9) || (bMonth == 11)) { 
    var bDays = 31; 
} 

if ((bMonth == 3) || (bMonth == 5) || (bMonth == 8) || (bMonth == 10)) { 
    var bDays = 30; 
} 

if (bMonth == 1 && ((bYear % 4 == 0) && 
     (bYear % 100 != 0)) || (bYear % 400 == 0)) { 
    var bDays = 29; 
} 

if (bMonth == 1 && ((bYear % 4 != 0) || (bYear % 100 == 0))) { 
    var bDays = 28; 
} 

var FirstMonthDiff = bDays - bDay + 1; 

if (eDay - bDay < 0) { 
    eMonth = eMonth - 1; 
    eDay = eDay + eDays; 
} 

var daysDiff = eDay - bDay; 

if (eMonth - bMonth < 0) { 
    eYear = eYear - 1; 
    eMonth = eMonth + 12; 
} 

var monthDiff = eMonth - bMonth, 
    yearDiff = eYear - bYear; 

if (daysDiff == eDays) { 
    daysDiff = 0; 
    monthDiff = monthDiff + 1; 

    if (monthDiff == 12) { 
     monthDiff = 0; 
     yearDiff = yearDiff + 1; 
    } 
} 

if ((FirstMonthDiff != bDays) && (eDay - 1 == eDays)) { 
    daysDiff = FirstMonthDiff; 
} 
console.log(yearDiff + " Year(s)" + " " + 
    monthDiff + " month(s) " + daysDiff + " days(s)");  
0
function (row) 
{ 
    var age = 0; 
    var birthday = row["FechaNacimiento"]; 

    age = new Date().getFullYear() - birthday.getFullYear(); 

    if (new Date() < birthday.setFullYear(birthday.getFullYear() + age)) 
    { 
     age--; 
    } 

    return age; 
} 

晚,但這個工程......