HTML
========================================================================================
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<script src="https://code.jquery.com/jquery-3.4.1.js"
integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU="
crossorigin="anonymous"></script>
<link rel="stylesheet" href="Test_Css.css" />
<body>
<form>
<table>
<tr>
<td colspan=2 class="title">회원 기본 정보</td>
</tr>
<tr class = "first">
<td class="list">*아이디 :</td>
<td class = "data"><input type="text" id="id" value="" /> 4~12자의 영문 대소문자와 숫자로만
입력</td>
</tr>
<tr>
<td class="list">*비밀번호 :</td>
<td class = "data"><input type="password" id="pw1" value="" /> 4~12자의 영문 대소문자와
숫자로만 입력</td>
</tr>
<tr>
<td class="list">*비밀번호 확인 :</td>
<td class = "data"><input type="password" id="pw2" value="" /></td>
</tr>
<tr class ="last">
<td class="list">*메일주소 :</td>
<td class = "data"><input type="text" id="email" value="" /> 예) id@naver.com</td>
</tr>
<tr>
<td colspan=2 class="title">개인 신상 정보</td>
</tr>
<tr class = "first">
<td class="list">*주민등록번호 :</td>
<td><input type="text" id="RRN" value=""> 예)
123456-1234567</td>
</tr>
<tr>
<td class="lit">*생일 :</td>
<td class = "data"><select id="year"></select>년 <select id="month">
<option value=1>01</option>
<option value=2>02</option>
<option value=3>03</option>
<option value=4>04</option>
<option value=5>05</option>
<option value=6>06</option>
<option value=7>07</option>
<option value=8>08</option>
<option value=9>09</option>
<option value=10>10</option>
<option value=11>11</option>
<option value=12>12</option>
</select>월 <select id="day"></select>일</td>
</tr>
<tr>
<td class="lit">관심분야 :</td>
<td class = "data"><input type="checkbox" name="interest" value="컴퓨터">컴퓨터
<input type="checkbox" name="interest" value="인터넷">인터넷
<input type="checkbox" name="interest" value="여행">여행
<input type="checkbox" name="interest" value="영화감상">영화감상
<input type="checkbox" name="interest" value="음악">음악 </td>
</tr>
<tr class ="last">
<td class="lit">자기소개 :</td>
<td class = "data"><textarea></textarea></td>
</tr>
</table>
<div>
<input type="submit" value="회원가입">
<input type="reset" value="다시입력">
</div>
</form>
</body>
<script src="Test_JS.js"></script>
</html>
========================================================================================
CSS
=========================================================================================
@charset "UTF-8";
.title {
text-align : center;
background-color : #33cc33;
font-size : 30px;
font-weight : 900;
font-family : "궁서";
color : white;
height : 50px;
border-bottom : 20px solid #FFFFFF;
border-top : 60px solid #FFFFFF;
padding : 10px 0px;
}
table {
width : 580px;
margin : auto;
}
/* 테이블 간격조정 */
td:not(.title) {
border-bottom : 6px solid #FFFFFF;
border-top : 6px solid #FFFFFF;
}
.list {
width : 20%;
font-size : 15px;
}
.data {
width : 80%;
font-size : 15px;
}
div {
text-align : center;
margin : 50px 0px;
}
#idE {
font-size : 10px;
color : red;
border : 0;
}
#pw1E {
font-size : 10px;
color : red;
border : 0;
}
#pw2E {
font-size : 10px;
color : red;
border : 0;
}
#emE {
font-size : 10px;
color : red;
border : 0;
}
#rrnE {
font-size : 10px;
color : red;
border : 0;
}
#ymdE {
font-size : 10px;
color : red;
border : 0;
}
textarea{
width : 95%;
margin : auto 0;
height : 70px;
}
input[type=submit]{
width : 150px;
height : 50px;
font-size : 20px;
font-weight : 900;
font-family : "궁서";
border : 0;
color : #000000;
background-color : #a6ff4d;
}
input[type=reset]{
width : 150px;
height : 50px;
font-size : 20px;
font-weight : 900;
font-family : "궁서";
border : 0;
color : #000000;
background-color : #a6ff4d;
}
=======================================================================================
JavaScript
=======================================================================================
var id_stat = false;
var pw1_stat = false;
var pw2_stat = false;
var email_stat = false;
var rrn_stat = false;
var ymd_stat = false;
/* 새로운 객체를 생성하는 함수 */
function cE(id, text){
var item = document.createElement("tr");
item.id = id;
item.append(document.createElement("td"));
var a = document.createElement("td")
a.innerText = text;
item.append(a);
return item;
}
/* 아이디의 유효성 검사 -> 아이디에서 벗어 났을대 출력 */
$("#id").focusout(function() {
var id = $("#id").val();
if (id.match("^[a-zA-Z0-9]{4,12}$") == null) {
id_stat = false;
if ($("#idE").length != 0) {
return;
}
$("#id").parents("tr").after(cE("idE","아이디가 잘못되었습니다."));
} else {
id_stat = true;
$("#idE").closest("tr").remove();
}
});
/* 비밀번호 유효성 검사 */
$("#pw1").focusout(function() {
var pw1 = $("#pw1").val();
var id = $("#id").val();
if (pw1.match("^[a-zA-Z0-9]{4,12}$") == null || pw1 == id) {
pw1_stat = false;
if ($("#pw1E").length != 0) {
return
}
$("#pw1").parents("tr").after(cE("pw1E","비밀번호가 아이디와 같거나 잘못되었습니다."));
}else{
pw1_stat = true;
$("#pw1E").closest("tr").remove();
}
});
/* 비밀번호 확인 */
$("#pw2").focusout(function() {
var pw1 = $("#pw1").val();
var pw2 = $("#pw2").val();
if (pw1 != pw2) {
pw2_stat = false;
if ($("#pw2E").length != 0) {
return
}
$("#pw2").parents("tr").after(cE("pw2E","비밀번호가 일치하지 않습니다."));
}else{
pw2_stat = true;
$("#pw2E").closest("tr").remove();
}
});
/* 메일주소 확인 */
$("#email").focusout(function() {
var email = $("#email").val();
if (email.match("^[a-z|0-9|A-Z]+@[a-z]+.[a-z]+$") == null) {
email_stat = false;
if ($("#emE").length != 0) {
return
}
$("#email").parents("tr").after(cE("emE","이메일이 잘못되었습니다."));
}else{
email_stat = true;
$("#emE").closest("tr").remove();
}
});
/* 주민등록번호 */
$("#RRN").focusout(function() {
var rrn = $("#RRN").val();
if(rrn.match("^[0-9]{6}-[0-9]{7}$") == null){
rrn_stat = false;
if($("#rrnE").length != 0){
return;
}
$("#RRN").parents("tr").after(cE("rrnE","주민등록번호가 잘못되었습니다."));
}else{
rrn = rrn.replace("-","");
var arr = new Array();
for(var i = 0; i < rrn.length; i++){
arr[i] = parseInt(rrn.charAt(i));
}
var j = 2;
var key = 0;
for(var i = 0; i < 12; i++){
if(j >= 10){
j = 2;
}
key += j*arr[i];
j++
}
key = 11-key%11;
if(key != arr[12]){
rrn_stat = false;
$("#rrnE").closest("tr").remove();
$("#RRN").parents("tr").after(cE("rrnE","올바른 주민등록번호가 아닙니다."));
}else{
rrn_stat = true;
$("#rrnE").closest("tr").remove();
}
}
});
/* 달력 만들기*/
$("#month").change(function(){
Day()
})
$("#year").change(function(){
var m = $("#month");
m.val(1);
Day();
})
/* 시작과 동시에 생성 */
$("document").ready(function(){
Year();
Day();
})
/* 일을 만드는 함수 */
function Day(){
var m = parseInt($("#month option:selected").val());
var y = parseInt($("#year option:selected").val());
var d = $("#day");
var lastDay = new Date(y,m,0).getDate();
$("#day option").closest("option").remove();
for(var i = 1; i <= parseInt(lastDay); i++){
d.append(createDay(i));
}
}
/*일을 입력받으면 option객체를 생성 */
function createDay(a){
var d = document.createElement("option");
d.value = a;
if(a < 10){
d.innerText = "0"+a;
}else{
d.innerText = a;
}
return d;
}
/* 년도를 만드는 함수 */
function Year(){
var y = $("#year");
var today = new Date().getFullYear();
for(var i = today-99; i <= today; i++){
y.append(createYear(i));
}
}
/* 년도를 입력받으면 option객체를 생성한다. */
function createYear(a){
var y = document.createElement("option");
y.value = a;
y.innerText = a;
return y;
}
/* 생년월일 확인하기 */
$("#year").parent().focusout(function(){
var rrn = $("#RRN").val();
var y1 = parseInt(rrn.substr(0,2)); // 주민등록년도
var m1 = parseInt(rrn.substr(2,2)); // 주민등록월
var d1 = parseInt(rrn.substr(4,2)); // 주민등록일
var y2 = parseInt($("#year").val().substr(2,2));
var m2 = parseInt($("#month").val());
var d2 = parseInt($("#day").val());
var t = (y1 == y2 && m1 == m2 && d1 == d2);
if(!t){
ymd_stat = false;
if($("#ymdE").length != 0){
return;
}
$(this).parents("tr").after(cE("ymdE","생년월일이 일치하지 않습니다."));
}else{
ymd_stat = true;
$("#ymdE").closest("tr").remove();
}
});
/* submit 제어 */
$("form").submit(function(){
var all = id_stat && pw1_stat && pw2_stat && email_stat && rrn_stat && ymd_stat;
if(!all){
alert("필수입력란(*)을 모두 작성해 주세요.");
}
return all;
})
/* reset 제어 */
$("input[type = reset]").click(function(){
$("#ymdE").closest("tr").remove();
$("#rrnE").closest("tr").remove();
$("#emE").closest("tr").remove();
$("#pw2E").closest("tr").remove();
$("#pw1E").closest("tr").remove();
$("#idE").closest("tr").remove();
});
'Web' 카테고리의 다른 글
| Mini Project (0) | 2019.07.22 |
|---|---|
| HTML,JavaScript로 단순한 계산기 만들기 (0) | 2019.06.14 |