티스토리 뷰

반응형

폼 요소를 다루다 보면 select와 checkbox 요소에 readonly 속성을 적용해야 할 때가 있습니다. HTML 표준에서는 input 요소와 달리 select나 checkbox에 직접적으로 readonly 속성을 적용할 수 없기 때문에 JavaScript 또는 jQuery를 사용해 간접적으로 처리해야 합니다. 이번 글에서는 이를 효율적으로 구현하는 방법을 알려드리겠습니다.

 


select 요소에 Readonly 효과 적용하기

select 요소는 기본적으로 값을 선택할 수 있도록 드롭다운 메뉴가 열립니다. 하지만 readonly 속성을 적용해야 할 경우, JavaScript를 활용해 사용자가 메뉴를 열지 못하게 설정할 수 있습니다.

jQuery 코드 예제

$('select[data-readonly="true"]').on('mousedown', function(event) {
    event.preventDefault();
});

코드 설명

  • select[data-readonly="true"]: HTML의 data-readonly 속성이 true로 설정된 select 요소를 선택합니다.
  • mousedown 이벤트를 사용: 사용자가 마우스로 드롭다운 메뉴를 클릭하려고 할 때 동작을 방지합니다.
  • event.preventDefault(): 기본 동작을 취소하여 메뉴가 열리지 않도록 합니다.

checkbox 요소에 Readonly 효과 적용하기

checkbox는 값을 체크하거나 해제하는 요소로, HTML 표준에는 readonly 속성이 정의되어 있지 않습니다. 따라서 JavaScript를 사용해 체크박스의 클릭 동작 자체를 막아야 합니다.

jQuery 코드 예제

$('input[type="checkbox"][data-readonly="true"]').on('click', function(event) {
    event.preventDefault();
});

코드 설명

  • input[type="checkbox"][data-readonly="true"]: data-readonly 속성이 true로 설정된 checkbox 요소를 선택합니다.
  • click 이벤트를 사용: 사용자가 체크박스를 클릭했을 때 동작을 방지합니다.
  • event.preventDefault(): 기본 클릭 동작을 취소하여 체크박스의 상태가 변경되지 않도록 만듭니다.

코드를 활용할 때 주의할 점

  1. data-readonly 속성으로 상태를 정의하세요
    HTML 요소에 data-readonly="true" 속성을 추가해 readonly 상태를 적용합니다. 예를 들어:
  2. <select data-readonly="true"> <option>Option 1</option> <option>Option 2</option> </select> <input type="checkbox" data-readonly="true" />
  3. jQuery가 반드시 포함되어야 합니다
    위 코드는 jQuery 라이브러리를 기반으로 작성되었습니다. 페이지에 jQuery를 로드한 후 사용해야 정상적으로 동작합니다.
  4. UI 개선과 UX를 고려하세요
    사용자가 readonly 상태를 알 수 있도록 비활성화 스타일을 적용하거나 메시지를 추가해 혼란을 줄이는 것이 좋습니다.

결론: 이 코드를 언제, 어떻게 활용해야 할까요?

폼 요소에 readonly를 적용하는 것은 사용자가 특정 조건에서 데이터를 수정하지 못하도록 제한할 때 유용합니다. 예를 들어, 승인된 데이터나 조회 전용 데이터를 보여줄 때 사용자가 값을 변경하지 못하도록 설정할 수 있습니다.

이번 코드는 간단한 설정만으로 select와 checkbox 요소에 readonly 효과를 부여할 수 있습니다. 특히 jQuery를 활용하면 코드가 더 간결하고 관리하기 쉬워집니다. 여러분의 프로젝트에 필요한 폼 제어 기능을 추가할 때 이 코드를 적용해 보세요! 😊


이 글이 여러분의 웹 개발에 조금이라도 도움이 되었길 바랍니다! 

반응형
댓글