๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ–ฅ๏ธ ํ”„๋ก ํŠธ์—”๋“œ/JavaScript

[Script] ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€ ๊ธฐ๋Šฅ JavaScript/JQuery๋กœ ๊ตฌํ˜„ํ•˜๊ธฐ

by OR15A 2023. 12. 7.
์š”๊ตฌ์‚ฌํ•ญ
id : ๋ฌธ์ž(์˜์–ด), ์ˆซ์ž๋งŒ, ์ค‘๋ณต์ฒดํฌ, "test"
pw : ๋น„๋ฐ€๋ฒˆํ˜ธํ™•์ธ(๊ฐ€์ž…์‹ ์ฒญ๋ฒ„ํŠผ ํด๋ฆญ์‹œ)
์ด๋ฆ„ : 5๊ธ€์ž(maxlength x)-script ๋ฌธ์ž(ํ•œ๊ธ€,์˜์–ด) 5๊ธ€์ž ๋„˜์–ด๊ฐˆ ์‹œ ๋ฐ”๋กœ ์ฒดํฌ
์ด๋ฉ”์ผ : ์œ ํšจ์„ฑ(๊ฐ€์ž…์‹ ์ฒญ๋ฒ„ํŠผ ํด๋ฆญ์‹œ)
ํœด๋Œ€ํฐ : ์ˆซ์ž๋งŒ 4์ž๋ฆฌ -> 3๋ฒˆ์งธ๋กœ 4๊ฐœ ์ž…๋ ฅํ•˜๋ฉด 3๋ฒˆ์งธ ์ฐฝ์œผ๋กœ ์ปค์„œ์ด๋™
์ฃผ๋ฏผ๋ฒˆํ˜ธ : ์ˆซ์ž๋งŒ ์ฃผ๋ฏผ๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๋’ท์ž๋ฆฌ ๋งจ์ฒซ์ž๋ฆฌ๋งŒ ์ˆซ์ž 1****** (๊ฐ€์ž… ์‹ ์ฒญํด๋ฆญ์‹œ)

 

์˜ˆ์‹œ ํ™”๋ฉด

 

  • ๊ฐ™์€ ๊ธฐ๋Šฅ์„ JavaScript์™€ JQuery ๋‘๊ฐ€์ง€๋กœ ๊ตฌํ˜„ํ•ด๋ด„

 

JavaScript

(์š”๊ตฌ ์‚ฌํ•ญ์„ ์ž˜๋ชป ํ•ด์„ํ•œ ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ์Œ. ๋‹ค์Œ์˜ JQuery์—์„œ๋Š” ๋ณด์™„.)

/* =======================================================  */

/*
* ๊ฐ€์ž…์‹ ์ฒญ ๋ฒ„ํŠผ
* */
const regi_btn = document.getElementById('regi_btn'); //๊ฐ€์ž… ์‹ ์ฒญ ๋ฒ„ํŠผ

regi_btn.addEventListener('click', function () {
    if (!idUnqPass()) return;
    if (!passwordValid()) return;
    if (!emailValid()) return;
    if (!validJuminNumber(jumin1.value)) return;
    if (!validJuminNumber(originalJumin2)) return;
    alert('ํšŒ์›๊ฐ€์ž… ์กฐ๊ฑด ์ถฉ์กฑ');
});


//id์ค‘๋ณต์—ฌ๋ถ€ ํ™•์ธ ํ–ˆ๋Š”์ง€
let idUnqChk = false;

function idUnqPass() {
    if (!idUnqChk) {
        alert('ID ์ค‘๋ณต์ฒดํฌ๋ฅผ ํ•ด์ฃผ์„ธ์š”');
        return false;
    } else {
        return true;
    }
}

/*
*id : ๋ฌธ์ž(์˜์–ด), ์ˆซ์ž๋งŒ, ์ค‘๋ณต์ฒดํฌ, "test"
* */
const idChkBtn = document.getElementById('idChkBtn');
idChkBtn.addEventListener('click', function () {
        //ID ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
        idUnqId();
    }
)

// input ์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ
const idInput = document.getElementById('id');

// ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€(์ž…๋ ฅ๋งˆ๋‹ค)
idInput.addEventListener('keyup', function () {
    const inputValue = idInput.value;
    // ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ true๋ฉด ์•ˆ๋‚ด๊ธ€์ž ์ˆจ๊ธฐ๊ธฐ
    if (isValidId(inputValue)) {
        hideComment();
    }
});


/*
* ์•„์ด๋”” text ๋ฐ›๊ธฐ
* ์œ ํšจํ•œ๊ฐ€ t/f
* f๋ฉด ์•ˆ๋‚ด๊ธ€์ž ์ „๋‹ฌ
* */
function isValidId(text) {
    let idText = text;

    if (/^[0-9]+$/.test(idText)) {

        //์˜์–ด๋ฅผ ํฌํ•จํ•ด์•ผ ํ•œ๋‹ค๋Š” ์•ˆ๋‚ด
        createComment('includeEN');
        return false;

    } else {
        if (/^[a-zA-Z0-9]+$/.test(idText)) {
            //์˜์–ด+์ˆซ์ž์ธ์ง€ ํŒ๋ณ„
            return true;
        } else {
            //์˜์–ด+์ˆซ์ž ์กฐํ•ฉ์ด์–ด์•ผ ํ•œ๋‹ค๋Š” ์•ˆ๋‚ด
            createComment('ENNUM');
            return false;
        }
    }
}


//์•ˆ๋‚ด ํžˆ๋“  ํ…์ŠคํŠธ ๋ณ€๊ฒฝํ•˜๋Š” ํ•จ์ˆ˜
function createComment(commentType) {
    let commentElement = document.getElementById('idValidInfo');
    if (commentType === 'includeEN') {
        commentElement.innerHTML = 'ID์— ์˜์–ด๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค ';
    } else if (commentType === 'ENNUM') {
        commentElement.innerHTML = 'ID๋ฅผ ์˜์–ด,์ˆซ์ž ์กฐํ•ฉ์œผ๋กœ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”';
    }
    commentElement.removeAttribute('hidden');
}

// ID ์œ ํšจ์•ˆ๋‚ด ์ˆจ๊ธฐ๊ธฐ
function hideComment() {
    let commentElement = document.getElementById('idValidInfo');
    commentElement.setAttribute('hidden', 'true');
}


/*์ผ๋‹จ ์ž„์‹œ๋กœ ๋งŒ๋“  ๋ฐฐ์—ด์—์„œ ๊ฐ™์€ ์•„์ด๋”” ์žˆ์œผ๋ฉด ์ค‘๋ณต์ด๋ผ๊ณ  alert*/
function idUnqId() {
    let idArr = ['aaa', 'bbb', 'ccc', 'apple123', 'test'];

    if (idArr.includes(idInput.value)) {
        alert("์ด๋ฏธ ์กด์žฌํ•˜๋Š” ์•„์ด๋”” ์ž…๋‹ˆ๋‹ค.");
        //์ž‘์„ฑ ์•„์ด๋”” ์‚ญ์ œ, ํฌ์ปค์Šค ์˜ฎ๊ธฐ๊ธฐ
        console.log('idInput.value: ' + idInput.value);
        idInput.value = "";
        idInput.focus();
    } else {
        if (isValidId(idInput.value)) {
            alert("์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ์•„์ด๋”” ์ž…๋‹ˆ๋‹ค");
            idUnqChk = true;
            idInput.disabled = true;
            document.getElementById('pass').focus();
        }
    }
}


/* =======================================================  */

/*
* pw : ๋น„๋ฐ€๋ฒˆํ˜ธํ™•์ธ(๊ฐ€์ž…์‹ ์ฒญ๋ฒ„ํŠผ ํด๋ฆญ์‹œ)
* */


function passwordValid() {
    const pass = document.getElementById('pass').value;
    const pass2 = document.getElementById('pass2').value;
    //๋น„๋ฐ€๋ฒˆํ˜ธ ๊ฐ™์€์ง€ ๊ฒ€์‚ฌ
    if (pass === null || pass2 === null) {
        return false;
    } else if (pass !== pass2) {
        alert("๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค");
        return false;
    } else {
        return true;
    }
}


/* =======================================================  */

/*
* ์ด๋ฆ„ : 5๊ธ€์ž(maxlength x)-script
* ๋ฌธ์ž(ํ•œ๊ธ€,์˜์–ด)
* 5๊ธ€์ž ๋„˜์–ด๊ฐˆ ์‹œ ๋ฐ”๋กœ ์ฒดํฌ
 */

function fncNameKeyUp(element) {
    const nameValue = element.value;
    const regex = /^[A-Za-z๊ฐ€-ํžฃ]+$/;
    // 5๊ธ€์ž? -> ๋ฌธ์ž?
    if (nameValue.length > 5) {
        element.value = nameValue.substring(0, 5);
        return false;
    } else {
        if (!regex.test(nameValue)) {
            // ์ž…๋ ฅํ•„๋“œ์— ์˜ค๋ฅ˜ ์Šคํƒ€์ผ ์ถ”๊ฐ€ํ•˜๊ธฐ
            element.classList.add("input-error");
            return false;
        } else {
            // ๊ดœ์ฐฎ์œผ๋ฉด ์˜ค๋ฅ˜ ์Šคํƒ€์ผ ์ œ๊ฑฐ
            element.classList.remove("input-error");
            return true;
        }
    }
}


/* =======================================================  */

/*
* ์ด๋ฉ”์ผ : ์œ ํšจ์„ฑ(๊ฐ€์ž…์‹ ์ฒญ๋ฒ„ํŠผ ํด๋ฆญ์‹œ)
* ์•ž์€ ์˜์–ด, ์ˆซ์ž๋งŒ ๊ฐ€๋Šฅํ•จ, @๋’ท์ชฝ์€ ์ •ํ•ด์ง„ ์ด๋ฉ”์ผ ๋‚ด์—์„œ๋งŒ ๊ฐ€๋Šฅํ•จ
* */

function emailValid() {
    const email1Element = document.getElementById('email1');
    const email1 = document.getElementById('email1').value;
    const email2 = document.getElementById('email2').value;

    const emailArr = ["gmail.com", "naver.com", "daum.net", "nate.com", "hanmail.net", "korea.com"];
    const emailRegex = /^[a-zA-Z0-9._-]+$/;
    if (email1 === null || email2 === null) {
        alert('email์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”')
        email1Element.focus();
        return false;
    } else if (!emailRegex.test(email1) || !emailArr.includes(email2)) {
        alert('email ์ฃผ์†Œ๋ฅผ ํ™•์ธํ•ด์ฃผ์„ธ์š”');
        email1Element.focus();
        return false;
    } else {
        return true;
    }
}


/* =======================================================  */
/*
* ํœด๋Œ€ํฐ :
* ์ˆซ์ž๋งŒ 4์ž๋ฆฌ -> 3๋ฒˆ์งธ๋กœ
* 4๊ฐœ ์ž…๋ ฅํ•˜๋ฉด 3๋ฒˆ์งธ ์ฐฝ์œผ๋กœ ์ปค์„œ์ด๋™
* */
document.getElementById('ph2')
    .addEventListener('input', function () {
        focusMove(this, 4, 'ph3')
    });


/*์ฃผ๋ฏผ๋ฒˆํ˜ธ๋„ ์ปค์„œ์ด๋™*/
document.getElementById('jumin1')
    .addEventListener('input', function () {
        focusMove(this, 6, 'jumin2')
    });

/*์ฃผ๋ฏผ๋ฒˆํ˜ธ๋„ ์ปค์„œ์ด๋™*/
document.getElementById('jumin2')
    .addEventListener('input', function () {
        focusMove(this, 7, 'address')
    });


/*์ปค์„œ์ด๋™ ๊ณตํ†ต๊ธฐ๋Šฅ ํ•จ์ˆ˜ ์ถ”์ถœ*/
function focusMove(element, maxLength, nextInputId) {
    if (element.value.length === maxLength) {
        document.getElementById(nextInputId).focus();
    }
}


/* =======================================================  */
/*
* ์ฃผ๋ฏผ๋ฒˆํ˜ธ : ์ˆซ์ž๋งŒ ์ฃผ๋ฏผ๋ฒˆํ˜ธ ์œ ํšจ์„ฑ
* ๋’ท์ž๋ฆฌ ๋งจ์ฒซ์ž๋ฆฌ๋งŒ ์ˆซ์ž 1******
* */
//์›๋ณธ๊ฐ’ ์ €์žฅ
let originalJumin2 = '';
const numberRegex = /^[0-9]+$/;
const jumin1 = document.getElementById('jumin1');

//์ˆซ์ž๋งŒ
function validJuminNumber(juminNum) {
    if (juminNum === "") {
        alert('์ฃผ๋ฏผ๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”.');
        return false;
    } else if (!numberRegex.test(juminNum)) {
        console.log("!numberRegex.test(juminNum)"+!numberRegex.test(juminNum));
        console.log("jumin1Value+ "+jumin1Value);
        alert('์ฃผ๋ฏผ๋ฒˆํ˜ธ๋ฅผ ์ •ํ™•ํžˆ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”');
        return false;
    } else {
        return true;
    }
}


document.getElementById('jumin2').addEventListener('input', function () {
    const inputValue = this.value;

    // ์ž…๋ ฅ๊ฐ’์ด ๋” ๊ธด ๊ฒฝ์šฐ: ์›๋ณธ์˜ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋ฅผ ์—…๋ฐ์ดํŠธ
    if (inputValue.length > originalJumin2.length) {
        originalJumin2 += inputValue[inputValue.length - 1];
    }


    // ์ž…๋ ฅ๊ฐ’์ด ๋” ์งง์€ ๊ฒฝ์šฐ: ์›๋ณธ์˜ ๋งˆ์ง€๋ง‰ ๊ธ€์ž๋ฅผ ์‚ญ์ œ
    if (inputValue.length < originalJumin2.length) {
        originalJumin2 = originalJumin2.substring(0, inputValue.length);
    }

    // ํ™”๋ฉด์—๋Š” ๋งˆ์Šคํ‚น๋œ ๊ฐ’ ํ‘œ์‹œ
    this.value = maskingNumber(inputValue);


    console.log("๋งˆ์Šคํ‚น ์™„๋ฃŒ");
    console.log("originalJumin2: " + originalJumin2);
});

//jumin2 ์ผ๋ถ€ *ํ‘œ์‹œ
function maskingNumber(number) {
    if (number.length > 1) {
        return number.substring(0, 1) + "*".repeat(number.length - 1);
    } else {
        return number;
    }
}

 

JQuery

 

$(function () {

    //์•„์ด๋”” ์ค‘๋ณต์ฒดํฌ
    $("#idChkBtn").click(function () {
        const idElement = $("#id");
        let idVal = idElement.val();
        if (idVal == '') {
            alert("id๋ฅผ ์ž…๋ ฅํ•˜์„ธ์š”");
            idElement.focus();
        } else if (idVal == 'test') {
            alert("์ด๋ฏธ ์กด์žฌํ•˜๋Š” id์ž…๋‹ˆ๋‹ค");
            idElement.val("").focus();
        } else {
            alert("์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ id์ž…๋‹ˆ๋‹ค");
            idElement.attr("disabled", "disabled");
            $("#idUptBtn").html("<input type=button value=์ˆ˜์ •ํ•˜๊ธฐ>");
            $("#pass").focus();
        }
    });

    //์•„์ด๋”” ์ˆ˜์ •
    $("#idUptBtn").click(function () {
        const idElement = $("#id");
        //๋น„ํ™œ์„ฑํ™” ํ’€์–ด์ฃผ๊ณ 
        idElement.removeAttr("disabled");
        //ํฌ์ปค์Šค ์˜ฎ๊ฒจ์ฃผ๊ณ 
        idElement.focus();
        //์ˆ˜์ • ๋ฒ„ํŠผ ๋‹ค์‹œ ์—†์• ๊ณ 
        $("#idUptBtn").empty();
    });


    //์•„์ด๋”” ๋ฌธ์ž(์˜์–ด), ์ˆซ์ž๋งŒ (์ •๊ทœํ‘œํ˜„์‹?)

    const textNumberRegex = /^[a-zA-Z0-9]+$/;
    const textRegex = /^[a-zA-Z๊ฐ€-ํžฃ]+$/;
    const numberRegex = /^[0-9]+$/;
    const emailRegex = /^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;


    $("#id").on("input", function () {
        const idVal = $(this).val();
        console.log("idVal " + idVal);
        if (!textNumberRegex.test(idVal)) {
            $("li#idValidInfo").text('id๋ฅผ ์˜์–ด์™€ ์ˆซ์ž๋กœ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”').removeAttr("hidden");
        } else {
            $("li#idValidInfo").attr("hidden", "hidden");
        }
    });


    //๋น„๋ฐ€๋ฒˆํ˜ธ ์ผ์น˜ ํ™•์ธ
    function passwordCheck() {
        const pw = $("#pass").val();
        const pw2 = $("#pass2").val();
        if ((pw != null) || (pw2 != null)) {
            alert('๋น„๋ฐ€๋ฒˆํ˜ธ๋ฅผ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š”');
            $("#pass").focus();
            return false;
        } else if (pw != pw2) {
            alert('๋น„๋ฐ€๋ฒˆํ˜ธ๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.');
            $("#pass").focus();
            return false;
        } else {
            return true;
        }
    }


    //์ด๋ฆ„ ๊ธ€์ž์ˆ˜ ์ฒดํฌ - ๋„˜์–ด๊ฐ€๋ฉด ํ…Œ๋‘๋ฆฌ ๋นจ๊ฐ›๊ฒŒ(ํด๋ž˜์Šค ์ถ”๊ฐ€), ์•„๋ž˜์— ์•ˆ๋‚ด๋ฌธ๊ตฌ
    $("#name").on("keyup", function () {
        if ($(this).val().length > 5) {
            alert("5๊ธ€์ž ์ดํ•˜๋งŒ");
            $(this).val($(this).val().slice(0, 5));
        }

    });


    //ํฌ์ปค์Šค ์ž๋™์œผ๋กœ ์˜ฎ๊ฒจ๊ฐ€๋Š” ํ•จ์ˆ˜
    function moveFocus(element, textSize, nextElement) {
        if ($(element).val().length >= textSize) {
            $(nextElement).focus();
        }
    }

    //์ด๋ฉ”์ผ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ
    function emailValid() {
        const emailValue = $("#email1").val() + '@' + $("#email2").val();
        if (!emailRegex.test(emailValue)) {
            alert("์œ ํšจํ•˜์ง€ ์•Š์€ ์ด๋ฉ”์ผ์ž…๋‹ˆ๋‹ค");
            $("#email1").focus();
            return false;
        } else {
            return true;
        }
    }


    //ํœด๋Œ€ํฐ : ์ˆซ์ž๋งŒ 4์ž๋ฆฌ -> 3๋ฒˆ์งธ๋กœ
    $("#ph2").on("input", function () {
        moveFocus(this, 4, "#ph3")
    });


    //์ฃผ๋ฏผ๋ฒˆํ˜ธ : ์ˆซ์ž๋งŒ ์ฃผ๋ฏผ๋ฒˆํ˜ธ ์œ ํšจ์„ฑ
    // 	 ๋’ท์ž๋ฆฌ ๋งจ์ฒซ์ž๋ฆฌ๋งŒ ์ˆซ์ž 1******
    // 	 (๊ฐ€์ž… ์‹ ์ฒญํด๋ฆญ์‹œ)

    // ์ฃผ๋ฏผ๋ฒˆํ˜ธ ์•ž์ž๋ฆฌ 6๊ธ€์ž
    $("#jumin1").keyup(function () {
        if ($("#jumin1").val().length > 7) {
            $("#jumin1").val($("#jumin1").val().slice(0, 5));
        }
        ;

    });



    //์ฃผ๋ฏผ๋ฒˆํ˜ธ ๋’ท์ž๋ฆฌ ๋ฐ›์•„์˜ค๊ธฐ
    $("#jumin2").keyup(function () {

        if ($("#jumin2").val().length > 8) {
            $("#jumin2").val($("#jumin2").val().slice(0, 6));
        }
        ;

        //์ƒˆ๋กญ๊ฒŒ ์ž…๋ ฅ
        let jumin2 = $("#jumin2").val().charAt($("#jumin2").val().length - 1);

        //jumin3 ์— ์ถ”๊ฐ€
        if ($("#jumin2").val().length > $("#jumin3").val().length) {
            $("#jumin3").val($("#jumin3").val() + jumin2);
        } else if ($("#jumin2").val().length < $("#jumin3").val().length) {
            $("#jumin3").val($("#jumin3").val().slice(0, $("#jumin2").val().length - 1));
        }

        if ($("#jumin2").val().length > 1) {
            $("#jumin2").val($("#jumin2").val().slice(0, -1) + '*');
        }

    });


    //๋’ท์ž๋ฆฌ *๋กœ ๋ณ€๊ฒฝํ•˜๊ธฐ


    //์ฃผ๋ฏผ๋ฒˆํ˜ธ ์œ ํšจ์„ฑ ๊ฒ€์‚ฌ


    $("#testBtn").click(function () {
        console.log("jumin2: " + $("#jumin2").val());
        console.log("jumin3: " + $("#jumin3").val());
    });


});