<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>영수증 확인 폼</title>
<style>
#receipt {
width: 700px;
font-family: Verdana, Geneva, Tahoma, sans-serif;
}
table {
width: 100%;
}
table,
#receiptOption,
th,
td {
border: 1px solid #aaaaaa;
border-collapse: collapse;
padding: 0;
}
tr {
height: 40px;
}
th {
width: 180px;
text-align: left;
padding: 8px;
background-color: rgb(198, 214, 235);
}
#receiptOption {
text-align: center;
margin-left: auto;
margin-right: auto;
padding: 10px;
}
.longText {
width: 300px;
height: 20px;
margin: 5px 10px;
}
.shortText {
width: 60px;
height: 30px;
margin: 5px 20px;
}
#btn {
font-size: 16px;
width: 80px;
height: 35px;
color: white;
background-color: rgb(54, 104, 168);
display: block;
margin: auto;
}
.hidden {
display: none;
}
</style>
</head>
<body>
<div id="receipt">
<h3>영수증 확인을 위해 아래의 정보를 정확히 입력해 주시기 바랍니다.</h3>
<br>
<div id="receiptOption">
<input type="radio" name="option" value="구매자명+금액" checked>구매자명 + 금액
<input type="radio" name="option" value="이메일">이메일
<input type="radio" name="option" value="카드번호">카드번호
</div>
<form class="inner_table" name="frm1" action="https://www.w3schools.com/action_page.php" method="get">
<table>
<tr>
<th>구매자명</th>
<td><input type="text" class="longText" name="name" value=""></td>
</tr>
<tr>
<th>결제금액</th>
<td><input type="number" class="longText" name="price" value=""></td>
</tr>
</table>
</form>
<form class="inner_table hidden" name="frm2" action="https://www.w3schools.com/action_page.php" method="get">
<table>
<tr>
<th>이메일</th>
<td><input type="text" class="longText" name="email" value=""></td>
</tr>
</table>
</form>
<form class="inner_table hidden" name="frm3" action="https://www.w3schools.com/action_page.php" method="get">
<table>
<tr>
<th>카드번호</th>
<td>
<input type="number" class="shortText" name="cardNum" value="">-
<input type="number" class="shortText" name="cardNum" value="">-
<input type="number" class="shortText" name="cardNum" value="">-
<input type="number" class="shortText" name="cardNum" value="">
</td>
</tr>
</table>
</form>
<br>
<input type="submit" id="btn" value="제출">
</div>
</body>
<script>
const radioButton = document.querySelectorAll('input[name="option"]');
const form1 = document.querySelector('form[name="frm1"]');
const form2 = document.querySelector('form[name="frm2"]');
const form3 = document.querySelector('form[name="frm3"]');
const submitButton = document.getElementById('btn');
function formVisibility() {
const selectOption = document.querySelector('input[name="option"]:checked').value;
form1.classList.add('hidden');
form2.classList.add('hidden');
form3.classList.add('hidden');
if (selectOption === "구매자명+금액") {
form1.classList.remove('hidden');
} else if (selectOption === "이메일") {
form2.classList.remove('hidden');
} else if (selectOption === "카드번호") {
form3.classList.remove('hidden');
}
}
radioButton.forEach(radio => {
radio.addEventListener('change', formVisibility);
});
formVisibility();
function validateForm() {
const selectOption = document.querySelector('input[name="option"]:checked').value;
if (selectOption === "구매자명+금액") {
const name = form1.querySelector('input[name="name"]').value;
const price = form1.querySelector('input[name="price"]').value;
if (!name || /[^가-힣a-zA-Z]/.test(name)) {
alert("구매자명을 입력하세요.");
form1.name.focus();
return false;
}
if (!price || isNaN(price) || Number(price) <= 0) {
alert("결제금액을 입력하세요.");
form1.price.focus();
return false;
}
form1.submit();
} else if (selectOption === "이메일") {
const email = form2.querySelector('input[name="email"]').value;
const emailPattern = /^[A-Za-z0-9_\.\-]+@[A-Za-z0-9\-]+\.[A-Za-z0-9\-]+/;
if (!email || !emailPattern.test(email)) {
alert("이메일을 입력하세요.");
form2.email.focus();
return false;
}
form2.submit();
} else if (selectOption === "카드번호") {
const cardFields = form3.querySelectorAll('input[name="cardNum"]');
for (let i = 0; i < cardFields.length; i++) {
const cardNum = cardFields[i].value;
if (!cardFields[i].value || isNaN(cardFields[i].value) || cardNum.length !== 4) {
alert("카드번호를 입력하세요.");
cardFields[i].focus();
return false;
}
}
form3.submit();
}
return true;
}
submitButton.addEventListener('click', function (event) {
validateForm();
});
</script>
</html>