天天看點

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

這個就類似于QQ等軟體填寫個人資訊處的生日後年齡就會自動被計算出。

思路:

        監聽下拉框内容的改變

        1、設定年齡的輸入框不可編輯,我為了讓其以後能往背景傳輸資料,其屬性設定為:readonly unselectable="on",該設定表示input 元素,不可編輯,不可複制,不可選擇,不能接收焦點,設定後文字的顔色也會變成灰色,但是背景可以接收到傳值。

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

        2、擷取目前日期的年月日

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

      3、擷取日期下拉框内容,将其轉化為數值型

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

    4、通過計算得出相應年齡并顯示在文本框中。

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

相關界面示範:

初始界面:日期顯示的是目前日期

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

選擇相應日期,年齡就會自動顯示在文本框内:

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

選擇大于目前日期的時間,浏覽器會提示錯誤,點選确定後年齡輸入框内容為空:

Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框
Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框
Jquery擷取日期下拉框内容後計算出相應年齡顯示在input輸入框

以下為核心代碼:

<script type="text/javascript">
$(function () {
  $(".select").change(function(){
	  var date=new Date();
	  var nowYear = date.getFullYear();
	  var nowMonth = date.getMonth()+1;
	  var nowDay = date.getDate();
	  nowYear = parseInt(nowYear);
	  nowMonth = parseInt(nowMonth);
	  nowDay = parseInt(nowDay);
	  
	  var birthYear = $("#YYYY" ).find("option:selected").text();
	  var birthMonth = $("#MM").find("option:selected").text();
	  var birthDay = $("#DD").find("option:selected").text();
	  birthYear = parseInt(birthYear);
	  birthMonth = parseInt(birthMonth);
	  birthDay = parseInt(birthDay);
	  
	  if(nowYear==birthYear){
		  if((nowMonth>birthMonth)||(nowMonth==birthMonth)&&(nowDay>=birthDay)){
			  $("#age").val("0");
			  }else{
				  alert("生日選擇有誤,請重新選擇");
				  $("#age").val("");
			  }
		  
	  }else{
		  var ageYearSub = nowYear - birthYear;
		  if(ageYearSub>0){
			  if(nowMonth==birthMonth){
				  var ageDaySub = nowDay-birthDay;
				  if(ageDaySub<0){
					  var age = ageYearSub-1;
					  $("#age").val(age);
				  }else{
					  $("#age").val(ageYearSub);
				  }
			  }else{
				  var ageMonthSub = nowMonth-birthMonth;
				  if(ageMonthSub<0){
					  var age2 = ageYearSub-1;
					  $("#age").val(age2);
				  }else{
					  $("#age").val(ageYearSub);
				  }
			  }
		  }
	  }
    });
  });