CheckValidDate
- 존재하는 날짜인지 확인
- checkValidDate(날짜)
- true, false 로 결과가 나온다.
방법1. class 지정
생년월일 ( HTML )
<li>
<label>생년월일</label>
<select class="birthSelect" name="birthYear"
id="birthYear">
</select>
<select class="birthSelect" name="birthMonth"
id="birthMonth">
</select>
<select class="birthSelect" name="birthDate"
id="birthDate">
</select>
</li>
만나이
const birthSelect_list
= document.querySelectorAll("select.birthSelect");
for(let birthSelect of birthSelect_list){
birthSelect.addEventListener('change',function(){
if(isNan(this.value)){
if(birthSelect.id == "birthYear"){
alert("태어나신 년도를 선택하세요.");
} else if(this.id == "birthMonth"){
alert("태어나신 월을 선택하세요.");
} else{
alert("태어나신 일을 선택하세요.");
}
document.querySelector
("나이값넣을장소").innerHTML = "";
}
else{
const birthday
= document.querySelector("select#birthYear").value + "-"
+ document.querySelector("select#birthMonth").value + "-"
+ document.querySelector("select#birthDate").value;
if(checkValidDate(birthday)){
const age = go_age(birthday);
document.querySelector
("나이값넣을장소").innerHTML = age;
}
if(!checkValidDate(birthday)
&& isNan(birthSelect.value)){
alert("달력상에 존재하지 않는 날짜를 선택하셨습니다.");
document.querySelector("나이값넣을장소").innerHTML = "";
}
}
}
}
방법2. 함수 직접 선언
생년월일 ( HTML )
<li>
<label>생년월일</label>
<select name="birthYear" id="birthYear"
onchange="check_date(this)">
</select>
<select name="birthMonth" id="birthMonth"
onchange="check_date(this)">
</select>
<select name="birthDate" id="birthDate"
onchange="check_date(this)">
</select>
</li>
만나이
function check_date(select){
if(isNan(this.value)){
if(birthSelect.id == "birthYear"){
alert("태어나신 년도를 선택하세요.");
} else if(this.id == "birthMonth"){
alert("태어나신 월을 선택하세요.");
} else{
alert("태어나신 일을 선택하세요.");
}
document.querySelector
("나이값넣을장소").innerHTML = "";
}
else{
const birthday
= document.querySelector("select#birthYear").value + "-"
+ document.querySelector("select#birthMonth").value + "-"
+ document.querySelector("select#birthDate").value;
if(checkValidDate(birthday)){
const age = go_age(birthday);
document.querySelector
("나이값넣을장소").innerHTML = age;
}
if(!checkValidDate(birthday)
&& isNan(birthSelect.value)){
alert("달력상에 존재하지 않는 날짜를 선택하셨습니다.");
document.querySelector("나이값넣을장소").innerHTML = "";
}
}
}
만나이 구하기 함수
function go_age(birthday){
const d_birthday = new Date(birthday);
const birthYear = d_birthday.getFullYear();
const now = new Date();
const currentYear = now.getFullYear();
if(d_birthday.getMonth() < now.getMonth()
|| d_birthday.getMonth() == now.getMonth()
&& d_birthday.getDate() < now.getDate()){
return currentYear - birthYear;
}
else{
return currentYear - birthYear - 1;
}
}
정리
- 15_form_regular_expression
-> form_regular_expression.html, form_regular_expression.css, form_regular_expression.js