2012-09-05 35 views
1

我知道我在這裏必須缺少一些簡單的東西,但我會喜歡一些幫助。從一個輸入計算年齡並更新另一個輸入

首先,HTML:

<input type="text" name="dob" /> 
<input id="age" type="text" name="age" /> 

和JavaScript

$('input[name=dob]').change(getAge); 
$('input[name=age]').change(getAge); 
function getAge() { 
    var today = new Date(); 
    var birthDate = new Date($('input[name=dob]').val()); 
    var age = today.getFullYear() - birthDate.getFullYear(); 
    var m = today.getMonth() - birthDate.getMonth(); 
    if (m < 0 || (m === 0 && today.getDate() < birthDate.getDate())) { 
     age--; 
    } 
    $('#age').val(age); 
}; 

這不是爲我工作。當我在「dob」字段中輸入日期時,「年齡」字段返回NaN。

+0

這是什麼問題? – undefined

+0

問題是什麼? – antonpug

+0

對不起,我不明白。這不適合我。當我在「dob」字段中輸入日期時,「年齡」字段返回NaN。我會更新我的原始帖子。 – user1647550

回答

0

我假設你沒有得到正確的年齡(或任何數字的回報)。一些建議:

  1. 你有一個單引號掛在代碼塊的末尾。 刪除它,因爲它可能導致一個未被捕獲的錯誤。

  2. 您似乎沒有執行或驗證任何格式的'dob'輸入。 Date對象只能使用特定類型的輸入。找出你想要的,然後執行它(在使用它之前給用戶一個消息和一個檢查)。

  3. 在'if'語句的第二部分,使用圓括號確保它檢查你想要的內容。我相信你寫的方式會導致這種檢查:((m === 0) && today.getDate()) < birthDate.getDate()。試試這個:(m === 0) && (today.getDate() < birthDate.getDate())。我希望有所幫助。

+0

謝謝你的見解。單引號是發佈我的代碼的異常。這不在我的實際代碼中。我已更新我的原始帖子。你是正確的,我沒有執行日期格式(還)。我一直在輸入日期(用於測試)爲YYYYMMDD。那是不正確的?我對if語句做了修改,但結果是一樣的,NaN。 – user1647550

+0

我在這裏回答了我自己的問題。我使用的是日期輸入的MySQL風格,這是不正確的。我將你的答案標記爲正確,因爲它使我找到了解決辦法。謝謝!對於任何可能好奇的人,正確的默認輸入是MM/DD/YYYY。 – user1647550

相關問題