手动输入D.O.B时计算年龄

时间:2013-12-10 08:25:28

标签: javascript jquery ajax

我使用Ajax Calender查找Age,我在一个文本框中使用了日历,并在Next Texbox上显示了Age。直到现在一切都很好,但现在我有两个问题

第一个问题: - 我希望Age Textbox被禁用,以便用户无法更改Age,但是当我禁用它时不会在数据库中存储任何内容,现在我不明白该怎么做

第二个问题: - 用户可能手动开始输入DOB,而不是从日历中选择,在这种情况下,没有计算任何内容,如何以仍然计算年龄的方式应用功能。

JavaScript代码如下,现在如何在用户在文本框中手动输入D.O.B时使其工作!!

<script type="text/javascript">
    function DateSelectionChanged(e) {

        var today = new Date();
        var dob = e.get_selectedDate();
        var months = (today.getMonth() - dob.getMonth() + 
                      (12 * (today.getFullYear() - dob.getFullYear())));
        document.getElementById("txtCONSULTANT_AGE").value= Math.round(months/12);
        document.getElementById("txtCONSULTANT_AGE").readOnly = true;
    }    
</script>

这里在Ajax Calender Extender的OnClientDateSelectionChanged上调用DateSelectionChanged

谢谢你的进步。

3 个答案:

答案 0 :(得分:0)

这会给你年龄:

var age = Math.floor(((new Date()).getTime()-(new Date($('#myAgeTextBox').val())).getTime())/(1000*60*60*24*365));

其中myAgeTextBox是文本框的ID(假设用户以正确的格式输入了日期)

编辑:使代码更具可读性

var currentDate = (new Date()).getTime();
var dobDate = (new Date($('input').val())).getTime();
var annualMilliSeconds = 1000*60*60*24*365;
var age = Math.floor((currentDate-dobDate)/(annualMilliSeconds));

答案 1 :(得分:0)

使用HTML使用

禁用年龄框
<input type="text" name="age" readonly="readonly" />

<input type="text" name="age" disabled />

供JavaScript使用

document.getElementById('age').readOnly = true;`

或者

document.getElementById('age').disabled = true;

注意:仅当您要将其从提交中删除时才应使用

答案 2 :(得分:0)

我解决了我的问题,非常简单。

创建另一个函数,在该函数中只从文本框中获取值并传入变量dob,所以它将是这样的: - 早期: -

dob = e.get_selectedDate();

现在

dob = (new Date(document.getElementById("txtDATE_OF_BIRTH").value));

其他一切都会保持不变。所以最终的代码是

        function findage() {
          var PresentDay = new Date();
          var dob = (new Date(document.getElementById("txtDATE_OF_BIRTH").value));
          var months = (PresentDay.getMonth() - dateOfBirth.getMonth() + 
                 (12 * (PresentDay.getFullYear() - dateOfBirth.getFullYear())));
         document.getElementById("txtCONSULTANT_AGE").value=Math.round(months/12);
        }