자바스크립트

 

index.html

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <link rel="stylesheet" href="./join.css"></link>  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.1/jquery.js"></script>
  <script src="../join.js"></script>
</head>
<body>


<div class="wrapper">
    <div class="form-container">
      <form method="post"   onSubmit="return joinMember();"  autocomplete="off">
        <h3>회원 가입</h3>
        <p></p>
        <div class="form-group">
          <input type="text" class="formControl"  name="name" id="name"  placeholder="이름"  required autocomplete="off">
          <span class="error"></span>
        </div>

        <div class="form-group">
          <input type="text" class="formControl" name="id" id="id"  placeholder="아이디"  required autocomplete="off">
          <span class="error"></span>
        </div>

        <div class="form-group">
          <input type="email" class="formControl" name="email" id="email"  placeholder="이메일"  required autocomplete="off">
          <span class="error"></span>
        </div>

        <div class="form-group">
          <input type="password" class="formControl" name="password" id="password"  placeholder="비밀번호"  required autocomplete="off">
          <span class="error"></span>
        </div>        

        <div class="form-group">
          <input type="password" class="formControl" name="passwordConfirm" id="passwordConfirm"  placeholder="비밀번호 확인"  required autocomplete="off">
          <span class="error"></span>
        </div>           

        <button type="submit" >가입</button>
      </form>
    </div>
</div>



</body>
</html>

 

 

 

join.css

body{
  height: auto;
}  
.wrapper {
      min-height: 100vh;
      display: flex;
      align-items: center;
      display: block;
      margin-top: 100px;
      color: #000;
      font-size: 15px;
}
.wrapper input, .wrapper textarea,  .wrapper button {
  color: #000;
  font-size: 15px;
  outline: none !important;
}
.wrapper input:focus,.wrapper textarea:focus,.wrapper button:focus {
     outline: none !important;
}
.wrapper textarea {
      resize: none;
}
.wrapper h3 {
      margin: 0 0 12px 0;
      font-size: 45px;
      text-align: center;
      text-transform: uppercase;
}
.wrapper p {
      padding: 0 10px;
      margin: 0 0 55px 0;
      text-align: center;
      line-height: 1.8;
}
.wrapper  .form-container {
  max-width: 450px;
  margin: auto;
  padding: 70px 100px 80px;
  border: 5px solid #000000b3;
  background: #fff;
  box-shadow: 0 0 10px 0 rgba(0, 0, 0, 0.2);
  box-shadow: 5px 5px 25px 5px rgba(0, 0, 0, 0.2);
}
.form-container  .form-group {
      position: relative;
      display: block;
      margin-bottom: 48px;
}
.form-container .formControl {
      width: 100%;
      height: 43px;
      display: block;
      font-size: 15px;
      border: none;
      border-bottom: 2px solid #000;
      background: none;
      margin-bottom: 10px;
}
.form-container  button[type="submit"] {
  width: 162px;
  height: 51px;
  display: flex;
  align-items: center;
  justify-content: center;
  margin: 60px auto 0;
  padding: 0;
  color: #ffffff;
  border: 2px solid #ffffff;
  border-radius: 4px;
  background-color: #000;
  cursor: pointer;
  text-transform: uppercase;
  transition: background-color 0.2s linear;
}
.form-container  button[type="submit"]:hover {
      background-color: #0000008f;
}
.error{
  display: none;
  color: rgb(187, 28, 28);
  font-weight: bold;
  margin-top: 5px;
}

 

 

 

join.js

$(function () {
    formChek();
});


function joinMember() {
    const name = $("#name").val();
    const id = $("#id").val();
    const email = $("#email").val();
    const password = $("#password").val();
    const passwordConfirm = $("#passwordConfirm").val();
    console.log(name, id, email, password, passwordConfirm);

    if (!name) {
        alert("이름을 입력해 주세요.");
        $("#name").focus();
        return false;
    }

    if (!id) {
        alert("아이디를 입력해 주세요.");
        $("#id").focus();
        return false;
    }

    if (!email) {
        alert("이메일을 입력해 주세요.");
        $("#email").focus();
        return false;
    }

    if (!password) {
        alert("비밀번호를 입력해 주세요.");
        $("#password").focus();
        return false;
    }

    if (!passwordConfirm) {
        alert("비밀번호 확인을 입력해 주세요.");
        $("#passwordConfirm").focus();
        return false;
    }


    const error = document.querySelectorAll(".error");
    let errorCount = 0;

    const result = error.forEach((e) => {
        const display = $(e).css("display");
        if (display != "none") {
            errorCount = errorCount + 1;
            return;
        }
    })

    console.log("errorCount : " + errorCount);
    if (errorCount > 0) {
        alert("폼 입력 형식에 맞지 않습니다.");
        return false;
    } else {
        alert("전송 되었습니다.");
        return false;
    }

}


function formChek() {

    $("#name").on("keyup", function (event) {
        var kor_check = /([^가-힣ㄱ-ㅎㅏ-ㅣ\x20])/i;
        const name = $(this).val();
        if (kor_check.test(name) || name.length > 3) {
            $(this).next().text("한글 3글자 까지만 입력할 수 있습니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        $(this).next().hide();
    });


    $("#id").on("keyup", function (event) {
        var kor_check = /[ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/;
        const id = $(this).val();
        if (kor_check.test(id)) {
            $(this).next().text("한글입력 불가능하며 12글자 이하만 입력할 수 있습니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        if (id.length > 12) {
            $(this).next().text("한글입력 불가능하며 12글자 이하만 입력할 수 있습니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        $(this).next().hide();

    });


    $("#email").on("keyup", function (event) {
        var reg = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;
        const email = $(this).val();
        if (!reg.test(email)) {
            $(this).next().text("이메일 형식에 맞지 않습니다. ");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        if (email.length > 25) {
            $(this).next().text("이메일은 25자까지 입력가능 합니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        $(this).next().hide();

    });



    $("#password").on("keyup", function (event) {
        const password = $(this).val();
        if (password.length > 12) {
            $(this).next().text("비밀번호는 12자리까지만 입력 가능합니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        $(this).next().hide();
    });

    $("#passwordConfirm").on("keyup", function (event) {
        const password = $("#password").val();
        const passwordConfirm = $(this).val();
        if (password != passwordConfirm) {
            $(this).next().text("비밀번호와 비밀번호 확인이 일치하지 않습니다.");
            $(this).next().show();
            $(this).focus();
            return false;
        }
        $(this).next().hide();
    });


}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

about author

PHRASE

Level 60  라이트

한 사람의 눈먼 짓이 뭇사람의 눈을 멀게 한다. -무문관

댓글 ( 4)

댓글 남기기

작성