국내선 탑승객 ADT(13세이상) CHD(2세~13세 미만) INF (2세미만) 아니면 경고창
국제선은 12세 기준
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 |
<!DOCTYPE html> <html lang="ko"> <meta charset="utf-8"> <body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script> <script> // 탑승객 생년월일 체크 function validBirthday(tripType) { var result = true; jQuery.each(jQuery("input[id*=paxBT]"), function (i) { var birthday = jQuery(this).val(); if (isValidDate(birthday)) { /** 유효한 날짜형식이면 성인, 소아, 유아 별 나이체크한다. **/ var ageTypeCode = jQuery("#paxType" + (i + 1)).val(); for (var i = 0; i < tripType; i++) { var isValid = ageType(birthday, ageTypeCode, jQuery("#depTime" + (i + 1)).val()); //depTime1 depTime2 hidden //alert(jQuery("#depTime" + (i + 1)).val()); if (!isValid) { result = false; if ("CHD" == ageTypeCode) { alert("소아 탑승객은 만 2세 이상 ~ 만 13세 미만입니다.\n입력하신 생년월일을 확인 해 주세요."); } else if ("INF" == ageTypeCode) { alert("유아 탑승객은 24개월 미만입니다.\n입력하신 생년월일을 확인 해 주세요."); } else { alert("성인 탑승객은 만 13세 이상입니다.\n입력하신 생년월일을 확인해 주세요."); } jQuery(this).focus(); return false; } } } else { result = false; alert("생년월일은 YYYYMMDD(19800101)로 입력 해 주세요"); jQuery(this).focus(); return false; } }); return result; } // 나이 타입별 생년월일 체크 function ageType(yyyymmdd, ageTypeCode, depdate) { var year = yyyymmdd.substr(0, 4); var month = yyyymmdd.substr(4, 2); var day = yyyymmdd.substr(6, 2); var birthDay = year + "" + month + "" + day; var date = depdate.split("."); var depYear = parseInt(date[0], 10), depMonth = parseInt(date[1], 10), depDay = parseInt(date[2], 10); if (ageTypeCode == "ADT") { // todate = 20210825 // 20080825 출생자부터 성인 var standardAdt = parseInt((depYear - 13) + ("00" + depMonth).slice(-2) + ("00" + depDay).slice(-2), 10); if (parseInt(birthDay, 10) <= parseInt(standardAdt, 10)) { return true; } else { return false; } } if (ageTypeCode == "CHD") { // todate = 20210825 // 20080826 출생 ~ 20190825 출생 var standardChdFrom = parseInt((depYear - 13) + ("00" + depMonth).slice(-2) + ("00" + depDay).slice(-2), 10); var standardChdTo = parseInt((depYear - 2) + ("00" + depMonth).slice(-2) + ("00" + depDay).slice(-2), 10); if (parseInt(birthDay, 10) > parseInt(standardChdFrom, 10) && parseInt(birthDay, 10) <= parseInt(standardChdTo, 10)) { return true; } else { return false; } } if (ageTypeCode == "INF") { var standardInf = parseInt((depYear - 2) + ("00" + depMonth).slice(-2) + ("00" + depDay).slice(-2), 10); if (parseInt(birthDay, 10) > parseInt(standardInf, 10)) { return true; } else { return false; } } } // 날짜가 유효한지 검사 function isValidDate(value) { var result = true; try { var y = value.substr(0, 4); var m = value.substr(4, 2); var d = value.substr(6, 2); var dateRegex = /^(?=\d)(?:(?:31(?!.(?:0?[2469]|11))|(?:30|29)(?!.0?2)|29(?=.0?2.(?:(?:(?:1[6-9]|[2-9]\d)?(?:0[48]|[2468][048]|[13579][26])|(?:(?:16|[2468][048]|[3579][26])00)))(?:\x20|$))|(?:2[0-8]|1\d|0?[1-9]))([-.\/])(?:1[012]|0?[1-9])\1(?:1[6-9]|[2-9]\d)?\d\d(?:(?=\x20\d)\x20|$))?(((0?[1-9]|1[012])(:[0-5]\d){0,2}(\x20[AP]M))|([01]\d|2[0-3])(:[0-5]\d){1,2})?$/; result = dateRegex.test(d + '-' + m + '-' + y); } catch (err) { result = false; } return result; } </script> 여정1 출국 <input type="text" id="depTime1" value="2021.09.10" /><br/> 여정2 출국 <input type="text" id="depTime2" value="2021.10.10" /><br/> 여정3 출국 <input type="text" id="depTime3" value="2021.11.10" /><br/> <br/> TYPE:<input type="text" id="paxType1" value="ADT"/> 생년월일 : <input type="text" id="paxBT1" value="19801212"/> <br/> TYPE:<input type="text" id="paxType2" value="CHD"/> 생년월일 : <input type="text" id="paxBT2" value="20161212"/> <br/> TYPE:<input type="text" id="paxType3" value="INF"/> 생년월일 : <input type="text" id="paxBT3" value="20161212"/> <br/> <br/> <button onclick="validBirthday(3)"> Check </button> </body> </html> |