2013-12-10 66 views
0

我已经使用Ajax Calender查找年龄,我在一个文本框中使用了日历,并在下一个文本框中显示了年龄。直到现在一切正常,但现在我有两个问题手动输入D.O.B时计算年龄

第一个问题: - 我希望年龄文本框被禁用,以便用户不能更改年龄,但因为我使它禁用它不会存储任何东西在数据库中,现在我不明白该怎么做。

第二个问题: - 用户可能会开始手动输入D.O.B,而不是从日历中选择它,在这种情况下,没有任何东西被计算出来,如何应用功能以仍然计算Age get的方式。

JavaScript代码如下,现在如何让用户在Textbox中手动输入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> 

这里DateSelectionChanged被称为Ajax的日历扩展

致谢OnClientDateSelectionChanged是进展。

+0

你可以显示你的代码..这将有助于了解更多。你在使用C#/ java吗? –

回答

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); 
     } 
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)); 
+0

发送到日期构造函数的输入的val值是多少?似乎不太可能的字符串值将符合ISO8601日期字符串格式你不觉得吗? – codefactor

+0

我确实说过我是在假设。 OP可能会放一些悬停文本'日期格式应该是MM/DD/YYYY'。甚至可以在提交之前进行RegEx检查 – tewathia

+0

可能更适合使用日期小部件,ISO8601不是mm/dd/yyyy,请参阅http://www.ecma-international.org/ecma-262/5.1/#sec-15.9。 1.15将用户输入值传递给日期构造函数并不是一个好主意。最好使用正则表达式来解析用户输入的字符串,并以正确的格式手动构建字符串。 – codefactor

0

要使用HTML使用

01禁用你的年龄箱

或者

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

的JavaScript中使用

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

或者

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

注意:如果你想从提交以及删除残疾人,才应使用