[JS] 기본 동작의 취소

형이·2023년 8월 16일

JavaScript

목록 보기
18/20
post-thumbnail

📝 JavaScript

🖥️ 1. 기본 동작의 취소

  • 웹브라우저의 구성요소들은 각각의 기본적인 동작 방법을 가지고 있다.
폼에서 submit 버튼을 누르면 데이터가 전송된다.
a 태그를 클릭하면 href 속성의 URL로 이동한다.

등등의 동작 방법이 있다.
  • 이러한 기본적인 동작들을 기본 이벤트라고 하는데, 사용자가 만든 이벤트를 이용해서 이러한 기본 동작을 취소할 수 있다.

📝 예제

EX1) removeEventListener()

<body>
    <input type="button" id="target1" value="property" />
    <input type="button" id="target2" value="listener" />

    <script>
        function onClick(){
            alert('click');
        }
        function onClick2(){
            alert('클릭');
        }

        // property
        // 마지막 event 방식만 남아있다.
        document.getElementById('target1').onclick = function(){ onClick() };
        document.getElementById('target1').onclick = function(){ onClick2() };

        // listener
        // 똑같은 대상에 event가 얼마든지 추가될 수 있다. (event 연결)
        document.getElementById('target2').addEventListener('click',onClick);
        document.getElementById('target2').addEventListener('click',onClick2);

         // 이벤트 하나를 제거
         document.getElementById('target2').removeEventListener('click',onClick);
    </script>
</body>

EX2) inline
<!--
	특정 동작 시 어떠한 조건에 따라
    return false;를 이용해 action을 취소
-->

<body>
    <p>
        <label>prevent event on
            <input type="checkbox" id="prevent" />
        </label>
    </p>
    <p>
        <a href="https://www.naver.com"
            onclick="if(document.getElementById('prevent').checked) return false;">
            naver
        </a>
    </p>
    <p>
        <form action ="https://www.naver.com"
            onsubmit="if(document.getElementById('prevent').checked) return false;">
            <input type="submit" />
        </form>
    </p>
</body>

EX3) outline

<body>
    <p>
        <label>prevent event on
            <input type="checkbox" id="prevent" />
        </label>
    </p>
    <p>
        <a id="target1" href="https://www.naver.com">naver</a>        
    </p>
    <p>
        <form id="target2" action ="https://www.naver.com">
            <input type="submit" />
        </form>
    </p>
    <script>
        document.getElementById('target1').onclick = function(){
            if( document.getElementById('prevent').checked ){
                return false;
            }
        }
        document.getElementById('target2').onsubmit = function(){
            if( document.getElementById('prevent').checked ){
                return false;
            }
        }
    </script>
</body>

EX4) event.preventDefault()

<body>
    <p>
        <label>prevent event on
            <input type="checkbox" id="prevent" />
        </label>
    </p>
    <p>
        <a id="target1" href="https://www.naver.com">naver</a>        
    </p>
    <p>
        <form id="target2" action ="https://www.naver.com">
            <input type="submit" />
        </form>
    </p>
    <script>
        document.getElementById('target1').addEventListener('click', function(event){
            if( document.getElementById('prevent').checked ){
                event.preventDefault();
            }
        })
        document.getElementById('target2').addEventListener('submit', function(event){
            if( document.getElementById('prevent').checked ){
                event.preventDefault();
            }
        })
    </script>
</body>

0개의 댓글