[JS] DOM에서 폼 다루기

박시은·2023년 7월 21일
0

JavaScript

목록 보기
48/58
post-thumbnail

▶ 폼 요소 값 가져오기

웹 문서의 폼 요소에는 사용자가 내용을 입력하는 텍스트 필드뿐이 아니라 라디오 버튼이나 체크 박스와 같이 클릭하는 요소가 있다. 이렇게 다양한 요소에 접근하는 방법에 대해 알아보자.


▷ id, class 속성 값 사용하기

앞 포스팅에서 다룬 것처럼 id나 class 를 사용하여 폼 요소에 접근할 수 있다.

// html
    <div class="main-title">
      <h1 class="text">안녕하세요!</h1>
      <h1 class="text">행복한 하루 보내세요🥰</h1>
    </div>
// js
document.querySelector(".main-title");

▷ value 프로퍼티 사용하기

value 프로퍼티를 사용하면 텍스트 필드나 이메일 필드에서 사용자가 입력한 내용을 가져올 수 있다.

// html
    <form class="display-container">
      <input type="text" class="input-box" />
    </form>
// console
document.querySelector(".input-box").value;


▷ name 속성 사용하기

폼 요소에 class, id, name 속성이 없고 name 속성만 있으면 name 식별자를 이용해 접근할 수 있다.

<form name="order">
  <fieldset>
    <legend>상품정보</legend>
    <ul>
      <li>
        <label class="field" for="product">상품 : </label>
        <input type="text" class="input-box" name="product" />
      </li>
    </ul>
  </fieldset>
</form>
// console
document.order.product.value // form의 name: order , input의 name : product


▷ 폼 배열 사용하기

폼 요소에 class, id, name 속성이 없으면 폼 배열을 사용하여 접근할 수 있다.

// html
    <form id="login_input">
      <input type="text" autofocus placeholder="아이디를 입력하세요" />
      <input type="password" placeholder="비밀번호를 입력하세요" />
    </form>
// console
document.forms // 모든 form을 가져온다.
document.forms[0].elements // 첫 번째 form에 있는 폼 요소를 모두 가져온다.


폼에 접근한 후 elements 속성을 사용하여 폼 요소들을 가져올 수 있다.

// console
document.forms[0].elements


아이디 필드에 접근하려면 아이디 필드가 폼에서 첫 번째 요소이므로 아래와 같이 작성해야 한다.

// console
document.forms[0].elements[0]




▶ 선택 목록에 접근하기

▷ 선택 목록에 접근하기

사용자가 어떤 항목을 선택했는지에 따라 다르게 동작하게 하려면 사용자가 선택한 항목을 알아내야한다.

// html
      <label for="major">학과를 선택하세요</label>
      <select id="major">
        <option>---- 학과 선택 ----</option>
        <option>컴퓨터공학과</option>
        <option>산업경영공학과</option>
        <option>미디어소프트웨어학과</option>
        <option>기계공학과</option>
      </select>


options 프로퍼티를 사용하여 사용자가 선택한 목록을 알아낼 수 있다.

// console
document.querySelector("#major").options

  • selectedIndex에 컴퓨터공학과에 해당하는 인덱스 1이 들어 있는 것을 확인할 수 있다.

▷ 알림창에 선택 목록 표시하기

선택 목록에서 항목을 선택하면 해당 내용을 알림 창에 표시해 보자!

  • 선택 메뉴에서 몇 번째 항목을 선택했는지는 selectedIndex 값을 확인하면 되고,
    선택한 항목의 내용을 가져올 때는 innerText 프로퍼티를 사용하면 된다.

  • 선택 목록에 함수를 연결할 때는 onclick이 아닌 innerText 프로퍼티를 사용한다.


// js
const selectMajor = document.querySelector("#major");

function displaySelect() {
  let selectedMajorText =
    selectMajor.options[selectMajor.selectedIndex].innerText;
  alert(`${selectedMajorText}를 선택하셨습니다.`);
}
selectMajor.onchange = displaySelect;




▶ 라디오 버튼과 체크박스에 접근하기

라디오 버튼은 여러 항목 중에서 하나만 선택할 수 있다.

// html
      <form name="majorForm">
        <fieldset>
          <legend>학과 선택</legend>
          <label><input type="radio" name="major" value="ce" />컴퓨터공학과</label>
          <label><input type="radio" name="major" value="ie" />산업경영공학과</label>
          <label><input type="radio" name="major" value="ms" />미디어소프트웨어학과</label>
          <label><input type="radio" name="major" value="me" />기계공학과</label>
        </fieldset>
      </form>

체크 박스는 한 개의 항목만 선택할 수 있다.

      <form name="majorForm">
        <fieldset>
          <legend>학과 선택</legend>
          <label><input type="checkbox" name="major" value="ce" />컴퓨터공학과</label>
          <label><input type="checkbox" name="major" value="ie" />산업경영공학과</label>
          <label><input type="checkbox" name="major" value="ms" />미디어소프트웨어학과</label>
          <label><input type="checkbox" name="major" value="me" />기계공학과</label>
        </fieldset>
      </form>

라디오 버튼과 체크 박스에 접근해보자

// console
document.majorForm.major


체크 박스 중 첫 번째 박스의 내용을 가져오려면 아래와 같이 작성하면 된다.

// console
document.majorForm.major[0].value




▶ checked 속성을 사용해 접근하기

  • 라디오 버튼이나 체크박스에는 checked 속성이 있다.
  • checked 속성은 선택하거나 선택하지 않거나 두 가지 값을 가지므로 논리형 값으로 표현한다. (항목 선택시 true, 미선택시 false)

어떤 항목을 선택했는지 알고 싶으면 checked 속성이 있는 것을 찾아야 한다.

// console
document.querySelector("input[name='major']:checked")


단, 체크박스는 2개 이상 선택할 수 있으므로 querySelectorAll() 함수를 사용해야 한다.

// console
document.querySelectorAll("input[name='major']:checked")

NodeList 형태로 선택한 항목들이 저장된다.




📎참조

Doit! 모던 자바스크립트 프로그래밍의 정석

profile
블로그 이전했습니다!

0개의 댓글