...","url":"https://sir.kr/boards/program/14808","author":{"@type":"Person","name":"아샬","url":"https://sir.kr/profile/25f0d61b-17b0-467c-aca9-c842cd94fdc6"},"interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":1},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":6}],"datePublished":"2011-11-02T05:29:35+09:00","dateModified":"2012-01-19T18:50:15+09:00","comment":[{"@type":"Comment","text":"서버 없이 돌아가는 코드를 만들기 위해 네이버 지도가 사용하는 API를 몰래 썼습니다.\r\n\r\n실제로 서비스하실 땐 저 부분을 바꿔줘야겠죠? 그러면 YQL을 쓸 이유도 없구요.","author":{"@type":"Person","name":"아샬"},"datePublished":"2011-11-02T05:32:41+09:00"},{"@type":"Comment","text":"내공이 상당하신 분 같네요^^\r\n좋은 팁 자주 올려주시면 감사하겠습니다~","author":{"@type":"Person","name":"시하"},"datePublished":"2011-11-02T10:31:06+09:00"},{"@type":"Comment","text":"짧은 코드안에 jquery의 많은 부분이 심플하게 구성되어 있네요.\r\njquery 공부하는 입장에서도 좋은 소스같습니다.\r\n감사합니다.","author":{"@type":"Person","name":"명랑폐인"},"datePublished":"2011-11-02T13:43:17+09:00"},{"@type":"Comment","text":"감사합니다...^^","author":{"@type":"Person","name":"행복한남자"},"datePublished":"2011-11-04T13:57:16+09:00"},{"@type":"Comment","text":"서버에 올려놨습니다. 어떤 건지 결과물부터 보고 싶은 분은... http://j.mp/vRyafl","author":{"@type":"Person","name":"아샬"},"datePublished":"2011-11-06T14:45:20+09:00"},{"@type":"Comment","text":"와우~~ 대단하시네요 .... \r\n\r\n멋지네요...","author":{"@type":"Person","name":"붉은바람"},"datePublished":"2012-01-19T18:50:15+09:00"}]}

[jQuery] 상위부터 차례로 지역 선택하기

http://sir.co.kr/bbs/board.php?bo_table=pg_qa&wr_id=4055

이 글을 보고 간단히 만들어 봤습니다.


index.html

<!DOCTYPE html>
<html xmlns='http://www.w3.org/1999/xhtml'>
    <head>
        <title>Real-time Address</title>
        <meta http-equiv="content-type" content="text/html; charset=utf-8" />
        <link href="stylesheet.css" media="screen" rel="stylesheet" type="text/css" />
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.4/jquery.min.js" type="text/javascript"></script>
        <script src="application.js" type="text/javascript"></script>
        </head>
    <body>
        <div id="content">
            <select>
                <option value="">광역시/도</option>
            </select>
            <select>
                <option value="">시/도/군</option>
            </select>
            <select>
                <option value="">읍/면/동</option>
            </select>
        </div>
    </body>
</html>


stylesheet.css

body {
    font-size: 12px;
    background: #FFF;
    color: #333;
    margin: 0;
}

#content {
    margin: 30px;
    padding: 20px;
    background: #7CF;
}


application.js

$(function() {
    var uniqueId = 0;

    function ajaxYqlWithJson(options) {
        var callbackName = 'my_yql_callback_' + ++uniqueId;
        window[callbackName] = options.callback;

        var yql = 'SELECT * FROM json WHERE url="' + encodeURIComponent(options.url) + '"';

        $.ajax({
            url: 'http://query.yahooapis.com/v1/public/yql?q=' + yql +
                '&format=json&callback=' + callbackName,
            dataType: 'script',
            complete: function() {
                delete window[callbackName];
            }
        });
    }

    function createSelectCallback(index) {
        return function(data) {
            var select = $('select').eq(index);
            $(data.query.results.result.subRegion).each(function(i, region) {
                $('<option></option>').attr('value', region.code).text(region.name)
                    .appendTo(select);
            });
        };
    }

    function clearSelect(select) {
        select.html(select.children().first());
    }

    function ajaxGetRegions(options) {
        var level = options.level;
        var code = options.code;
        if (code && level <= 8) {
            ajaxYqlWithJson({
                url: 'http://map.naver.com/common2/getBRegionByCodeAndLevel.nhn' +
                    '?level=' + level + '&code=' + code,
                callback: options.callback
            });
        }
    }

    $('select').each(function(index, select) {
        $(select).change(function() {
            for (var i = index + 1; i < $('select').length; i++) {
                clearSelect($('select').eq(i));
            }
            ajaxGetRegions({
                level: 2 + 3 * (index + 1),
                code: $(this).val(),
                callback: createSelectCallback(index + 1)
            })
        });
    });

    ajaxYqlWithJson({
        url: 'http://map.naver.com/common2/getBRegionByCodeAndLevel.nhn?level=2',
        callback: createSelectCallback(0)
    });
});

|

댓글 6개

서버 없이 돌아가는 코드를 만들기 위해 네이버 지도가 사용하는 API를 몰래 썼습니다.

실제로 서비스하실 땐 저 부분을 바꿔줘야겠죠? 그러면 YQL을 쓸 이유도 없구요.
내공이 상당하신 분 같네요^^
좋은 팁 자주 올려주시면 감사하겠습니다~
짧은 코드안에 jquery의 많은 부분이 심플하게 구성되어 있네요.
jquery 공부하는 입장에서도 좋은 소스같습니다.
감사합니다.
감사합니다...^^
서버에 올려놨습니다. 어떤 건지 결과물부터 보고 싶은 분은... http://j.mp/vRyafl
와우~~ 대단하시네요 ....

멋지네요...
댓글을 작성하시려면 로그인이 필요합니다.

프로그램

+
제목 글쓴이 날짜 조회
14년 전 조회 1,706
14년 전 조회 2,828
14년 전 조회 1,825
14년 전 조회 1,756
14년 전 조회 1,472
14년 전 조회 1,716
14년 전 조회 2,748
14년 전 조회 1,321
14년 전 조회 3,285
14년 전 조회 1,631
14년 전 조회 1,357
14년 전 조회 1,342
14년 전 조회 1,605
14년 전 조회 1,512
14년 전 조회 1,424
14년 전 조회 1,919
14년 전 조회 1,337
14년 전 조회 1,975
14년 전 조회 2,355
14년 전 조회 1,332
14년 전 조회 1,480
14년 전 조회 1,308
14년 전 조회 1,478
14년 전 조회 1,902
14년 전 조회 1,603
14년 전 조회 1,723
14년 전 조회 1,518
14년 전 조회 1,701
14년 전 조회 1,275
14년 전 조회 2,137
14년 전 조회 1,476
14년 전 조회 2,227
14년 전 조회 8,975
14년 전 조회 1,566
14년 전 조회 2,409
14년 전 조회 2,152
14년 전 조회 2,394
14년 전 조회 2,772
14년 전 조회 1,360
14년 전 조회 1,501
14년 전 조회 7,291
14년 전 조회 1,464
14년 전 조회 1,395
14년 전 조회 2,576
14년 전 조회 1,457
14년 전 조회 1,454
14년 전 조회 2,920
14년 전 조회 1,520
14년 전 조회 4,436
14년 전 조회 4,567
14년 전 조회 1,910
14년 전 조회 1,472
14년 전 조회 2,153
14년 전 조회 1,433
14년 전 조회 1,733
14년 전 조회 1,317
14년 전 조회 8,221
14년 전 조회 1,862
14년 전 조회 1,258
14년 전 조회 1,415
14년 전 조회 2,120
14년 전 조회 1,557
14년 전 조회 1,424
14년 전 조회 1,509
14년 전 조회 1,423
14년 전 조회 1,282
14년 전 조회 1,395
14년 전 조회 1,406
14년 전 조회 1,389
14년 전 조회 1,452
14년 전 조회 1,702
14년 전 조회 1,701
14년 전 조회 1,976
14년 전 조회 1,567
14년 전 조회 1,501
14년 전 조회 1,404
14년 전 조회 1,360
14년 전 조회 1,352
14년 전 조회 1,533
14년 전 조회 2,754
14년 전 조회 1,414
14년 전 조회 1,735
14년 전 조회 2,893
14년 전 조회 2,020
14년 전 조회 1,757
14년 전 조회 5,506
14년 전 조회 2,708
14년 전 조회 1,520
14년 전 조회 1,439
14년 전 조회 1,402
14년 전 조회 1,291
14년 전 조회 2,564
14년 전 조회 3,895
14년 전 조회 1,378
14년 전 조회 1,568
14년 전 조회 2,554
14년 전 조회 1,402
14년 전 조회 2,059
14년 전 조회 2,399
14년 전 조회 1.1만