본문 바로가기
Dev/bootstrap

부트스트랩4 데이트피커 datepicker 이벤트 가로채기 / 제이쿼리 toggle()이용해서 게시물 목록 정렬 버튼 토글하기

by 하양동백 2020. 3. 24.

목차

    부트스트랩4 데이트피커 datepicker 이벤트 가로채기

    부트스트랩4 데이트피커는 아주 강력한 도구입니다. 여러 이벤트와 API를 제공하여 사용자가 원하는 방식으로 캘린더와 시간을 선택할 수 있게 해주죠. 하지만 때로는 플러그인이 제공하는 기본 이벤트가 우리의 요구사항과 완벽하게 일치하지 않을 때가 있습니다. 이럴 때 소스 코드를 직접 수정해야 하는 상황이 발생할 수 있습니다. 본 글에서는 이러한 문제를 어떻게 해결할 수 있는지 알아보겠습니다.

    https://tempusdominus.github.io/bootstrap-4/Events/

     

    Redirecting to https://getdatepicker.com/

     

    tempusdominus.github.io

    부트스트랩4 데이트피커부트스트랩4 데이트피커 datepicker 이벤트 가로채기

    기본적인 이벤트 사용법

    Tempus Dominus에서 제공하는 공식 문서에 따르면, 다음과 같이 jQuery를 사용하여 이벤트를 가로챌 수 있습니다.

    $('#datetimepicker1').on('change.datetimepicker', function (e) {
        $('.timeBtn').removeClass('active');
    });

    이 코드는 #datetimepicker1 요소에 'change.datetimepicker' 이벤트가 발생할 때 timeBtn 클래스를 가진 모든 엘리먼트의 'active' 클래스를 제거합니다.

    문제점

    하지만 이 방법에는 한 가지 문제가 있습니다. datepicker가 초기 값이 없는 상태에서 'shown' 이벤트와 함께 'change' 이벤트가 발생하기 때문에, 원하는 동작을 하지 않을 수 있습니다. 이는 일반적인 사용 시나리오에서는 문제가 되지 않을 수 있지만, 특정 상황에서는 문제가 될 수 있습니다.

    소스 코드를 통한 해결법

    소스 코드를 직접 수정하는 방법도 있습니다. 예를 들어, 2256번 라인에 있는 selectDay 이벤트를 수정해 보겠습니다.

    case "selectDay":
        var k = this._viewDate.clone();
        $('.timeBtn').removeClass('active');  // 여기서 active 클래스를 제거
        // ... 나머지 코드
        break;

    이렇게 하면 datepicker에서 날짜를 선택할 때마다 다른 엘리먼트의 'active' 클래스가 제거됩니다. 이 방법은 원하는 동작을 얻기 위해 소스 코드를 직접 수정해야 하는 경우에 유용합니다.

    결론

    부트스트랩4 데이트피커는 매우 유용한 도구이지만, 때로는 기본 제공하는 이벤트로는 원하는 동작을 구현할 수 없을 때가 있습니다. 이런 경우에는 소스 코드를 직접 수정하여 문제를 해결할 수 있습니다. 하지만 이런 방법은 플러그인이 업데이트되면 다시 소스 코드를 수정해야 할 수도 있으니, 주의가 필요합니다.

    키워드: 부트스트랩4 데이트피커, datepicker, 이벤트 가로채기, jQuery, Tempus Dominus, active 클래스, 초기 값, 소스 코드 수정, 플러그인 업데이트, 사용 시나리오


    제이쿼리 toggle()을 이용해서 게시물 목록 정렬 버튼 토글하기

    게시물 목록을 정렬하는 작업은 웹사이트나 애플리케이션에서 자주 볼 수 있는 기능 중 하나입니다. 사용자는 게시물을 제목, 조회수, 게시일 등 다양한 기준으로 내림차순 혹은 오름차순으로 정렬하고 싶을 수 있습니다. 이럴 때 제이쿼리의 toggle() 함수를 이용하면 UI 상에서 아주 간단하게 이 기능을 구현할 수 있습니다. 본 포스팅에서는 단순히 UI 상의 토글 버튼을 어떻게 구현하는지에 대한 제이쿼리 소스 코드를 소개하겠습니다.

    사용할 HTML 및 CSS

    HTML은 테이블 형태로 게시물 목록을 구성하며, 각 헤더에는 정렬을 위한 <a> 태그를 부여합니다. CSS에서는 이 <a> 태그의 배경 이미지를 화살표로 설정하여, 현재 정렬 상태를 시각적으로 표시합니다.

    <!-- HTML -->
    <div>
        <table width="100%" id="sortBoard">
            <caption>게시물 목록</caption>
            <tbody>
                <tr>
                    <td>no</td>
                    <td><a href="#">제목</a></td>
                    <td><a href="#">분석기간</a></td>
                    <td><a href="#">발행일</a></td>
                    <td><a href="#">가격</a></td>
                    <td>조회수</td>
                </tr>
            </tbody>
        </table>
    </div>
    /* CSS */
    .bd00Bbs td a {
        background: url(../image/common/ico/arrow_0.gif) 100% 50% no-repeat;
        padding-right: 16px;
        display: inline-block;
    }
    
    .bd00Bbs td a.reverse {
        background: url(../image/common/ico/arrow_1.gif) 100% 50% no-repeat;
    }

    제이쿼리 코드로 토글 구현하기

    제이쿼리에서는 toggle() 함수를 이용하여 쉽게 클래스를 추가하거나 제거할 수 있습니다. 아래의 예시 코드에서는 .reverse 클래스를 토글하는 로직을 구현하였습니다.

    // jQuery
    $(document).ready(function() {
        $('td a').toggle(function(){
            $(this).addClass('reverse');
        }, function(){
            $(this).removeClass('reverse');
        });
    });

    이렇게 하면, 사용자가 해당 <a> 태그를 클릭할 때마다 .reverse 클래스가 추가되거나 제거되면서, 배경 이미지가 바뀌게 됩니다. 이를 통해 사용자는 현재 정렬 상태가 어떤지 쉽게 알 수 있습니다.

    마치며

    이 포스팅에서는 제이쿼리의 toggle() 함수를 이용해 게시물 목록의 정렬 버튼을 어떻게 토글할 수 있는지 간단한 예시를 통해 알아보았습니다. 단순히 UI 상에서의 변화를 보여주는 예시이니, 실제 데이터의 정렬 로직은 서버 측에서 처리해야 합니다. 그럼에도 불구하고 이러한 작은 UI 개선이 사용자 경험을 크게 향상시킬 수 있음을 잊지 말아야 합니다.

    끝!

    자세한 설명은 생략!

    짤방은~ 안구정화용 각선미 사진

    반응형

    댓글