IT/development

[jquery] ์‹œ๋„, ์‹œ๊ตฐ๊ตฌ ๋™์  ๊ตฌํ˜„

๊ผฌ๋น„๋žฉ 2026. 5. 17.

image source:https://images.unsplash.com/photo-1585076641399-5c06d1b3365f?q=80&w=1170&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D


์‹œ๋„์— ๋”ฐ๋ฅธ ์‹œ๊ตฐ๊ตฌ selectbox ๋™์  ๊ตฌํ˜„

์‹œ๋„, ์‹œ๊ตฐ๊ตฌ ๋ฐ์ดํ„ฐ๋ฅผ DB์—์„œ ๊ฐ€์ ธ์˜ค๋Š”๊ฒŒ ์•„๋‹ˆ๋ผ jsํŒŒ์ผ๋กœ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒฝ์šฐ

// sido_sigungu_data.js
// ์‹œ๋„
const sidoList = ["์„œ์šธ์‹œ", "๊ฐ•์›๋„", "์ธ์ฒœ", "๊ฒฝ๊ธฐ"]; 

// ์‹œ๊ตฐ๊ตฌ
const sigunguObj = {
    "์„œ์šธ์‹œ": ["๊ฐ•๋‚จ๊ตฌ", "๊ฐ•๋™๊ตฌ", "๊ฐ•๋ถ๊ตฌ", "๊ฐ•์„œ๊ตฌ"],
    "๊ฐ•์›๋„": ["์ถ˜์ฒœ์‹œ", "์›์ฃผ์‹œ", "๊ฐ•๋ฆ‰์‹œ", "๋™ํ•ด์‹œ"],
    "์ธ์ฒœ": ["๊ณ„์–‘๊ตฌ", "๋ฏธ์ถ”ํ™€๊ตฌ", "๋‚จ๋™๊ตฌ", "๋ถ€ํ‰๊ตฌ"],
    "๊ฒฝ๊ธฐ": ["์„ฑ๋‚จ์‹œ", "์ˆ˜์›์‹œ", "์•ˆ์–‘์‹œ", "์šฉ์ธ์‹œ"]
};

<!-- HTML ๊ตฌ์กฐ -->
<select id="sido_select">
    <option value="">์‹œ๋„ ์„ ํƒ</option>
</select>

<select id="sigungu_select" disabled>
    <option value="">์‹œ๊ตฐ๊ตฌ ์„ ํƒ</option>
</select>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="./sido_sigungu_data.js"></script> 
<script>
$(document).ready(function() {
    const $sido = $('#sido_select');
    const $sigungu = $('#sigungu_select');

    // ์‹œ๋„ ์„ธํŒ…
    sidoList.forEach(sido => {
        $sido.append(`<option value="${sido}">${sido}</option>`);
    });

    // ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์‹œ๋„์— ๋”ฐ๋ฅธ ์‹œ๊ตฐ๊ตฌ ๋ฐ์ดํ„ฐ ์„ธํŒ…
    $sido.on('change', function() {
        const selectedValue = $(this).val();
        
        // ๊ธฐ์กด ์‹œ๊ตฐ๊ตฌ ์ดˆ๊ธฐํ™”(๋ฐ์ดํ„ฐ ์ค‘๋ณต ๋ฐฉ์ง€)
        $sigungu.empty().append('<option value="">์‹œ๊ตฐ๊ตฌ ์„ ํƒ</option>');

        if (selectedValue) {
            // ์„ ํƒ๋œ ์‹œ๋„๋ฅผ ํ‚ค๊ฐ’์œผ๋กœํ•˜๋Š” ์‹œ๊ตฐ๊ตฌ ๋ฐ์ดํ„ฐ ์„ธํŒ…
            const list = sigunguData[selectedValue];
            
            list.forEach(sigungu => {
                $sigungu.append(`<option value="${sigungu}">${sigungu}</option>`);
            });
            
            // ๋น„ํ™œ์„ฑํ™” ํ•ด์ œ (์ง„์ž… ํ—ˆ์šฉ)
            $sigungu.prop('disabled', false);
        } else {
            $sigungu.prop('disabled', true);
        }
    });
});
</script>

๋Œ“๊ธ€