๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
[๊ฐœ๋ฐœ] Practice/JavaScript jQuery

[JavaScript / jQuery] ์ •๊ทœ์‹์œผ๋กœ ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฒ€์ฆํ•˜๋Š” ๊ธฐ๋Šฅ ๋งŒ๋“ค๊ธฐ

by Connecting-the-dots 2022. 3. 5.
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ’ก ์‹ค์Šต ํฌ์ธํŠธ!

  • ์ด๋ฒˆ ์‹ค์Šต์—์„œ๋Š” ์ •๊ทœ์‹์œผ๋กœ ์ด๋ฉ”์ผ๊ณผ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ๊ฒ€์ฆํ•˜๋Š” ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค์—ˆ๋Š”๋ฐ ๊ณ ๋ คํ•ด์•ผํ•˜๋Š” ๊ฒƒ๋“ค์ด ์ƒ๊ฐ๋ณด๋‹ค ๋งŽ์•˜๋‹ค.
    • ์ž…๋ ฅํ•œ ์•„์ด๋””๊ฐ€ ์ด๋ฉ”์ผ ํ˜•์‹์ด ์•„๋‹Œ๋ฐ ์ „์†ก์„ ๋ˆ„๋ฅด๋ฉด "์ด๋ฉ”์ผ ํ˜•์‹์˜ ์•„์ด๋””๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค." ๋ผ๋Š” ๋ฌธ๊ตฌ์˜ ๊ฒฝ๊ณ ์ฐฝ ๋„์šฐ๊ธฐ
    • ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 8์ž๋ฆฌ ๋ฏธ๋งŒ์ด๊ฑฐ๋‚˜ 16์ž๋ฆฌ ์ดˆ๊ณผ๋ผ๋ฉด ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅ์ฐฝ ์•„๋ž˜์— ํ•ด๋‹น ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ ๋„์šฐ๊ณ  ์ˆ˜์ •ํ•ด์„œ ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด๋‹น ์ƒํƒœ์— ๋งž๋Š” ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๋ฅผ ๋„์šฐ๊ฑฐ๋‚˜ ์—†์• ๊ธฐ
    • ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋ฆฌ ์ˆ˜๊ฐ€ ์กฐ๊ฑด ๋ฒ”์œ„(8~16์ž๋ฆฌ)๋ฅผ ๋ฒ—์–ด๋‚œ ์ƒํƒœ์—์„œ ์ „์†ก์„ ๋ˆ„๋ฅด๋ฉด ๊ฐ ์ƒํƒœ์— ํ•ด๋‹นํ•˜๋Š” ๋ฌธ๊ตฌ์˜ ๊ฒฝ๊ณ ์ฐฝ ๋„์šฐ๊ธฐ
    • ์ž…๋ ฅํ•œ ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž๋ฆฌ ์ˆ˜๊ฐ€ ์กฐ๊ฑด ๋ฒ”์œ„(8~16์ž๋ฆฌ)์— ํ•ด๋‹นํ• ์ง€๋ผ๋„ ํŠน์ˆ˜๋ฌธ์ž์™€ ์ˆซ์ž, ์˜๋ฌธ ์กฐํ•ฉ์ด ์•„๋‹ˆ๋ผ๋ฉด ํ•ด๋‹น ๋‚ด์šฉ์„ ๋‹ด์€ ๊ฒฝ๊ณ ์ฐฝ ๋„์šฐ๊ธฐ
    • ๋ชจ๋“  ์กฐ๊ฑด์„ ๋งŒ์กฑํ–ˆ์„ ๋•Œ ์ „์†ก์™„๋ฃŒํŽ˜์ด์ง€๋กœ ์ ‘์†ํ•˜๊ธฐ
  • ์ด์™ธ์—๋„ ์ด๊ฒƒ์ €๊ฒƒ ๋ˆŒ๋Ÿฌ๋ณด๋‹ค๊ฐ€ ๋ฐœ๊ฒฌํ•˜๋Š” ์•„์‰ฌ์šด ์ ๋“ค์„ ๋ณด์™„ํ–ˆ๋‹ค.
    • ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋‹ค๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ด์ „์— ์ž…๋ ฅํ–ˆ๋˜ ๋‚ด์šฉ์ด ๋‚จ์•„์žˆ์ง€ ์•Š๋„๋ก!
    • ๋‹ซ๊ธฐ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €๋‹ค๊ฐ€ ๋‹ค์‹œ ๋กœ๊ทธ์ธ ๋ฒ„ํŠผ์„ ๋ˆŒ๋ €์„ ๋•Œ ์ด์ „์— ๋น„๋ฐ€๋ฒˆํ˜ธ ์ž…๋ ฅํ•  ๋•Œ ๋–ด๋˜ ๊ฒฝ๊ณ  ๋ฌธ๊ตฌ๊ฐ€ ๋œจ์ง€ ์•Š๋„๋ก!

 


๐Ÿ’œ HTML

<div class="black-bg">
    <div class="white-bg">
        <h4>๋กœ๊ทธ์ธํ•˜์„ธ์š”</h4>
        <form action="success.html">
            <div class="my-3">
                <input type="text" class="form-control" id="email" placeholder="์ด๋ฉ”์ผ ํ˜•์‹์˜ ์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.">
            </div>
            <div class="my-3">
                <input type="password" class="form-control" id="password" placeholder="์˜๋ฌธ, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ตœ์†Œ ํ•œ ๊ฐ€์ง€์”ฉ ์กฐํ•ฉํ•˜์—ฌ 8~16์ž๋ฆฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.">
                <div id="pw-text1">๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 8์ž๋ฆฌ ๋ฏธ๋งŒ์ž…๋‹ˆ๋‹ค.</div>
                <div id="pw-text2">๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ 16์ž๋ฆฌ ์ดˆ๊ณผ์ž…๋‹ˆ๋‹ค.</div>
            </div>
            <button type="submit" class="btn btn-primary" id="submit">์ „์†ก</button>
            <button type="button" class="btn btn-danger" id="close">๋‹ซ๊ธฐ</button>
        </form> 
    </div>
</div>

๐Ÿ’œ CSS

.black-bg {
  width: 100%;
  height: 100%;
  position: fixed;
  background: rgba(0, 0, 0, 0.6);
  z-index: 5;
  padding: 30px;
  visibility: hidden; /* ์• ๋‹ˆ๋ฉ”์ด์…˜ ์ค„ ๋•Œ display: none ๋Œ€์šฉ, ์—†์• ๋Š” ๊ฒŒ ์•„๋‹ˆ๋ผ ๋ชจ์Šต๋งŒ ์ˆจ๊น€ */
  opacity: 0;
  transition: all 0.5s;
}

.white-bg {
  background: white;
  border-radius: 5px;
  padding: 30px;
}

#pw-text1,
#pw-text2 {
  color: red;
  font-weight: bold;
  margin-top: 5px;
  font-size: 12px;
}

๐Ÿ’œ JavaScript

$('#close').on('click', function(){
    $('#email').val('');
    $('#password').val('');
    $('#pw-text1').hide();
    $('#pw-text2').hide();
    $('.black-bg').eq(0).toggleClass('show');
})

function isEmail(asValue) {
    var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*\.[a-zA-Z]{2,3}$/i;

    return regExp.test(asValue);
}

function isPassword(asValue) {
    var regExp = /^(?=.*[a-zA-z])(?=.*[0-9])(?=.*[$`~!@$!%*#^?&\\(\\)\-_=+]).{8,16}$/;

    return regExp.test(asValue);
}

$('#submit').on('click', function(e){
    if($('#email').val() == '') {
        e.preventDefault();
        alert('์•„์ด๋””๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.');
    } else if(!isEmail($('#email').val())) {
        e.preventDefault();
        alert('์ด๋ฉ”์ผ ํ˜•์‹์˜ ์•„์ด๋””๊ฐ€ ์•„๋‹™๋‹ˆ๋‹ค.');
    }

    if ($('#password').val() == '') {
        e.preventDefault();
        alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.');
    } else if ($('#password').val().length < 8 || $('#password').val().length > 16) {
        e.preventDefault();
        alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋Š” 8~16์ž๋ฆฌ์—ฌ์•ผ ํ•ฉ๋‹ˆ๋‹ค.');
    } else if(!isPassword($('#password').val())) {
        e.preventDefault();
        alert('์˜๋ฌธ, ์ˆซ์ž, ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ตœ์†Œ ํ•œ ๊ฐ€์ง€์”ฉ ์กฐํ•ฉํ•˜์—ฌ 8~16์ž๋ฆฌ ๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.');
    }
})

$('#pw-text1').hide();
$('#pw-text2').hide();

$('#password').on('input', function(){
    if($('#password').val() != ''){
        if($('#password').val().length < 8){
            $('#pw-text1').show();
            $('#pw-text2').hide();
        } else if ($('#password').val().length > 16){
            $('#pw-text1').hide();
            $('#pw-text2').show();
        } else {
            $('#pw-text1').hide();
            $('#pw-text2').hide();
        }
    } else {
        $('#pw-text1').hide();
        $('#pw-text2').hide();
    }
})
  • ์ •๊ทœ์‹์˜ ๊ฒฝ์šฐ ๊น”๋”ํ•œ ์‚ฌ์šฉ์„ ์œ„ํ•ด ๋”ฐ๋กœ ํ•จ์ˆ˜๋กœ ๋งŒ๋“ค์–ด๋‘๊ณ  ํ•„์š”ํ•œ ๋ถ€๋ถ„์— ๋„ฃ์–ด ์‚ฌ์šฉํ–ˆ๋‹ค.
  • ์•„์ด๋””, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ด๋ฉ”์ผ, ์ „ํ™”๋ฒˆํ˜ธ ๋“ฑ ๋กœ๊ทธ์ธ ๊ด€๋ จ ๊ธฐ๋Šฅ์„ ๋งŒ๋“ค๋‹ค๋ณด๋ฉด ์ •๊ทœ์‹์ด ํ•„์š”ํ•  ๋•Œ๊ฐ€ ์žˆ๋Š”๋ฐ, ๊ฐ์‚ฌํ•˜๊ฒŒ๋„ ๋งˆ์นจ ์ž์ฃผ ์“ฐ๋Š” ์ •๊ทœ์‹์„ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜์—ฌ ๋ชจ์•„๋‘์‹  ๋ถ„์ด ๊ณ„์…”์„œ ๊ทธ ๋ถ„์˜ ์‚ฌ์ดํŠธ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค.
 

JavaScript ์ž์ฃผ ์“ฐ๋Š” ์ •๊ทœ์‹ ๋ชจ์Œ (์•„์ด๋””, ์ด๋ฉ”์ผ, ๋น„๋ฐ€๋ฒˆํ˜ธ, ์ „ํ™”๋ฒˆํ˜ธ,...)

์ž๋ฐ” ์Šคํฌ๋ฆฝํŠธ์—์„œ ์ž์ฃผ ์“ฐ๋Š” ์ •๊ทœ์‹์„ ๋ชจ์•„์™”์Šต๋‹ˆ๋‹ค. ์ผ์น˜ํ•  ์‹œ true๋ฅผ ๋ฐ˜ํ™˜ ํ•ฉ๋‹ˆ๋‹ค ์ด๋ฉ”์ผ ์ฒดํฌ ์ •๊ทœ์‹ function isEmail(asValue) { var regExp = /^[0-9a-zA-Z]([-_\.]?[0-9a-zA-Z])*@[0-9a-zA-Z]([-_\.]?[0-9..

rateye.tistory.com

 

728x90
๋ฐ˜์‘ํ˜•