열정과 게으름 사이

윤년 계산& 14세 미만 가입방지. 본문

공부 메모/javaScript

윤년 계산& 14세 미만 가입방지.

현냥이 2020. 11. 28. 01:07

아직 공부가 부족해서 인가.

이벤트 하나로 깔끔하게 윤년과 14세 미만을  출력하는 것은 짜기가 어렵네.

그래서 input시 윤년 계산,

change시에 14세 미만을 확인하도록 했다.

더 깔끔하게 할 수 있는 방법은 더 찾아보는 걸로.

	let today = new Date(),
		year = today.getFullYear(),
		month = today.getMonth()+1, // 0부터 시작하기 때문에 1을 더해줌//
		day = today.getDate();
	    
    
	//- 월에 맞는 날짜 출력 & 만14세 가입 방지-//
	$('#user_birthday_day').on({
		input:function(){
			let val = $(this).val();
			
			let year_val = $('#user_birthday_year').val();
				month_val = $('#user_birthday_month').val();
			
			$(this).val(val.replace(/[^0-9]/g,""));
				
			if($(this).val()>0){
				if(month_val == 1 || month_val == 3 || month_val == 5 || month_val == 7 || month_val == 8 || month_val == 10 || month_val == 12 ){
					if($(this).val() > 31){				
						alert('해당월의 마지막날 보다 큽니다.');
						$(this).val("");
					}
				}
				else if(month_val == 2){
					let year_val = $('#user_birthday_year').val();
					if(Number(year_val) % 100 != 0 && Number(year_val) % 4 == 0 || Number(year_val) % 400 == 0){//윤년 계산//
						if($(this).val() > 29){
							alert('해당월의 마지막날 보다 큽니다.');
							$(this).val("");
						}
					}else if( Number(year_val) % 400 != 0 ||  Number(year_val) % 100 == 0){
						if($(this).val() > 28){
							alert('해당월의 마지막날 보다 큽니다.');
							$(this).val("");
						}
					}
				}
				else if(month_val== 4 ||month_val == 6 || month_val == 9 ||month_val == 11 ){
					if($(this).val() > 30){
						alert('해당월의 마지막날 보다 큽니다.');
						$(this).val("");
					}
				}
			}
			else if((this).val()<0){
				$(this).val("1");
			}
		},
		change:function(){
			let year_val = $('#user_birthday_year').val();
				month_val = $('#user_birthday_month').val();
		
			if($(this).val() > day){ //오늘 보다 나중일때//

				if(Number(year)-Number(year_val) > 14){//출생연도 확인 14보다 큼//
					$(this).val($(this).val());
				
				}
				else if(Number(year)-Number(year_val) < 14){//출생연도 확인 14보다 작음//
						alert('만14세 미만은 가입할수 없습니다.');
						$(this).val("");
				}
				else if(Number(year)-Number(year_val)== 14){//출생연도 확인 14와 같음//
					if(Number(month)-Number(month_val)<=0){//출생월 확인 당월 이거나 이후 출생//
						alert('만14세 미만은 가입할수 없습니다.');
						$(this).val("");
					}
					if(Number(month)-Number(month_val)>0){//출생월 확인 당월보다 이전 출생(14와 같고 이전 출생)//
						$(this).val($(this).val());
					}
				}
			}
			else if($(this).val() <= day){//오늘과 같거나 이전일때//
				if(Number(year)-Number(year_val) > 14){//출생연도 확인 14보다 큼//
					$(this).val($(this).val());
				}
				else  if(Number(year)-Number(year_val) < 14){//출생연도 확인 14보다 작음//
					alert('만14세 미만은 가입할수 없습니다.');
					$(this).val("");
				}
				else if(Number(year)-Number(year_val)== 14){//출생연도 확인 14와 같음//
							
					if(Number(month)-Number(month_val)<0){//출생월 확인 당월보다 이후 출생//
						alert('만14세 미만은 가입할수 없습니다.');
						$(this).val("");
					}
					if(Number(month)-Number(month_val)>=0){//출생월 확인 당월보다 이전 출생이거나 생일 당일/
						$(this).val($(this).val());
					}
				}
			}
		}
	});
	
반응형
Comments