猿问

如何在JQuery中调用原生js函数以及如何计算真实年龄

如题。需要根据出生日期输入框的值计算目前年龄(周岁)。已找到可根据出生日期计算周岁的代码(使用原生js编写,既下面代码中的functionjsGetAge(strBirthday)),但在采用JQuery编写的主控制js(search.js)中无法调用。代码如下所示:
html文件:
……(无关代码忽略)
出生日期
年龄
岁search.js文件:functionjsGetAge(strBirthday)
	{
		varreturnAge;
		varstrBirthdayArr=strBirthday.split("-");
		varbirthYear=strBirthdayArr[0];
		varbirthMonth=strBirthdayArr[1];
		varbirthDay=strBirthdayArr[2];
		
		d=newDate();
		varnowYear=d.getYear();
		varnowMonth=d.getMonth()+1;
		varnowDay=d.getDate();
		
		if(nowYear==birthYear)
		{
			returnAge=0;//同年则为0岁
		}
		else
		{
			varageDiff=nowYear-birthYear;//年之差
			if(ageDiff>0)
			{
				if(nowMonth==birthMonth){
					vardayDiff=nowDay-birthDay;//日之差
					if(dayDiff<0)
					{returnAge=ageDiff-1;}
					else
					{returnAge=ageDiff;}
				}else{
					varmonthDiff=nowMonth-birthMonth;//月之差
					if(monthDiff<0)
					{returnAge=ageDiff-1;}
					else
					{returnAge=ageDiff;}
				}
			}
			else
			{returnAge=-1;//返回-1表示出生日期输入错误晚于今天}
		}
		returnreturnAge;//返回周岁年龄
}
$(document).ready(function(){
	$("#age").click(function(){
		alert(jsGetAge($("#birthday").val()))
		if($("#birthday").val()!=""){//由于采用日历控件,可保证字符串格式正确
			varage=jsGetAge($("birthday").val())
			if(age>=0){
				$("#age").val()=age
				$("#age").attr("readonly",true)
			}else{
				$("#birthday").val()=""
				alert("出生日期不能晚于今天")
			}
		}
	})
})经测试,alert(jsGetAge($("#birthday").val()))无法弹出对应警告框,因此个人认为是jquery中调用js的function产生的问题。大家有什么解决方案吗?谢谢。
慕桂英3389331
浏览 419回答 2
2回答

哈士奇WWW

不好意思,经过仔细查看和修改,问题已经得到解决。在此总结一下以供其他人借鉴:1.functionjsGetAge(strBirthday)函数的位置没有问题,可写在$(document).ready(function(){}中或外部。2.问题产生的原因是我的页面同时加载了其他js,加载速度较慢,导致click函数无法快速加载,因此误以为没有效果。实际上是有效果的。3.大家不要直接使用这个根据生日日期计算周岁的函数,这个函数存在问题,没有对同年进行进一步检验就判定年龄为0周岁。修改后的计算周岁的函数://使用前提:参数strBirthday已经是正确格式的2007-02-09这样的日期字符串(年份必须是完整年份)functionjsGetAge(strBirthday) { varreturnAge; varstrBirthdayArr=strBirthday.split("-"); varbirthYear=strBirthdayArr[0]; varbirthMonth=strBirthdayArr[1]; varbirthDay=strBirthdayArr[2]; d=newDate(); varnowYear=d.getFullYear(); varnowMonth=d.getMonth()+1; varnowDay=d.getDate() if(nowYear==birthYear) { if(birthMonth
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答