如题。需要根据出生日期输入框的值计算目前年龄(周岁)。已找到可根据出生日期计算周岁的代码(使用原生js编写,既下面代码中的function jsGetAge(strBirthday)),但在采用JQuery编写的主控制js(search.js)中无法调用。代码如下所示:
html文件:
<script type="text/javascript" src="js/jquery-1.8.2.min.js"></script>
<script type="text/javascript" src="js/search.js"></script>
……(无关代码忽略)
出生日期
<input name="info.birthday" type="text" id="birthday" onfocus="WdatePicker({dateFmt:'yyyy-MM-dd'})" class="Wdate" />
年龄
<input class="shortText" name="info.age" type="text" id="age" />
岁
search.js文件:
function jsGetAge(strBirthday)
{
var returnAge;
var strBirthdayArr=strBirthday.split("-");
var birthYear = strBirthdayArr[0];
var birthMonth = strBirthdayArr[1];
var birthDay = strBirthdayArr[2];
d = new Date();
var nowYear = d.getYear();
var nowMonth = d.getMonth() + 1;
var nowDay = d.getDate();
if(nowYear == birthYear)
{
returnAge = 0;//同年 则为0岁
}
else
{
var ageDiff = nowYear - birthYear ; //年之差
if(ageDiff > 0)
{
if(nowMonth == birthMonth){
var dayDiff = nowDay - birthDay;//日之差
if(dayDiff < 0)
{returnAge = ageDiff - 1;}
else
{returnAge = ageDiff ;}
}else{
var monthDiff = nowMonth - birthMonth;//月之差
if(monthDiff < 0)
{returnAge = ageDiff - 1;}
else
{returnAge = ageDiff ;}
}
}
else
{returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天}
}
return returnAge;//返回周岁年龄
}
$(document).ready(function() {
$("#age").click(function(){
alert(jsGetAge($("#birthday").val()))
if($("#birthday").val()!=""){//由于采用日历控件,可保证字符串格式正确
var age = jsGetAge($("birthday").val())
if(age>=0){
$("#age").val()=age
$("#age").attr("readonly",true)
}else{
$("#birthday").val()=""
alert("出生日期不能晚于今天")
}
}
})
})
经测试,alert(jsGetAge($("#birthday").val()))无法弹出对应警告框,因此个人认为是jquery中调用js的function产生的问题。大家有什么解决方案吗?谢谢。