프론트엔드 학습/HTML

9. form, fieldset, label, input 입력

DvdHan 2023. 7. 3. 15:47

[사용자 입력 태그]

태그 설명 속성
<form> </form> 정보를 제출하기 위한 태그들을 포함 autocomplete 속성 : 인풋칸의 자동완성 여부 (기본:on) 
최근 검색 기록 나오느냐, 아니냐 결정

<form action="서버파일" method="get">
button type : submit일 경우 서버 파일로 데이터 전달됨.
<fieldset> <form> 태그 안
input 요소와 label들을 그룹화 하기
disabled 속성 : 포함된 입력요소 비활성화
<fieldset
form="classForm"
disabled
fieldset 비활성화  
<legend> </legend> fieldset 요소의 제목 또는 설명  
<label> </label> 인풋 요소마다의 라벨 for = "input의 id"

<label for="A"
<input id="A"

연결
<input> 입력을 받는 요소  
<input 속성들>
id 식별자  
name 이름 HTML로는 의미가 없고, 정보를 서버에 보낼 때 사용
서버에서 각 항목을 받을 때 무엇에 대한 값인지 구별하는 용도

type = "radio"의 그룹화 기준
type 입력 값의 타입 : text (글자 입력),
: password (비밀번호 입력),
: search (적는칸에 지울 수 있도록 x 표식됨),
: tel (앱에서는 입력란에 번호 입력란이 뜸)
: number (숫자만 입력하도록)

: range (범위 설정)
: date (달력이 나와서 날짜 설정)
date의 min, max 에서는 yyyy-mm-dd 단위로 작성해야함
: checkbox (체크 박스)
: radio (N개 선택지 중 1개만 가능한 체크박스)
각 선택지 마다 <input>을 생성하고 name으로 그룹화함.
: file (파일 첨부 형식)
: hidden (함께 전송될 것이지만, 서버에게만 전송할 항목)
: email (기본적으로 text와 비슷하지만,
이메일 형태(@) 만 전송되도록 제한을 걸어둠.)
checked 체크박스 선택됨 유지  
min 입력 최소값 <input type =""> nummber, range, date의 범위 설정
max 입력 최대값 <input type =""> nummber, range, date의 범위 설정
step range의 간격 단위 <input type ="range">의 범위 설정
placeholder 입력값 없을 때 빈칸에 표시되는 문구  
maxlength placeholder가 있는 input type의
허용되는 최대 길이
허용되는 최대 길이, 초과시 삭제됨
minlength placeholder가 있는 input type의
허용되는 최소 길이
허용되는 최소 길이, 위반시, submit 거부됨
value <input>에 기본적으로 입력되는 값 기본적 (Default) 으로 입력되는 값
autofocus 자동으로 입력할 수 있도록 설정 <input autofocus> 형식으로 자동으로 입력할 수 있도록 됨
readonly 유저가 수정 불가, 서버 전송 O.  
disabled 유저가 수정 불가, 서버 전송 X. <input disabled> 품절 란에 사용할 수 있음.
required 필수 입력. <input required> 반드시 입력해야하는 란.
accept type ="file" 에서 받는 파일 형식 accept ="image/png, image/jpeg" 형식으로
첨부파일의 허용되는 파일 타입 명시
multiple typpe ="file"을 여러개 첨부 가능 파일들의 개수를 복수개로 허용하는 키워드
<button> </button> 버튼 type = "" 속성에
submit(제출), reset(초기화),
button(기본 동작 없음) => JS로 추가 기능을 생성할 때 사용

 

예시 #1. - fieldset, legend, 

[VS Code]

  <form>
    <fieldset>
      <legend>반장</legend>
      
      <label for="name_1">이름</label>
      <input 
      id="name_1" 
      name="name_1" 
      type="text"
      placeholder ="8자 이하"
      maxlength ="8">
      
      <br><br>
      
      <label for="age_1">나이</label>
      <input id="age_1" name="age_1" type="number">
      
    </fieldset>
    
    <br>
    
    <fieldset>
      <legend>부반장</legend>

      <label for="name_2">이름</label>
      <input 
      id="name_2" 
      name="name_2" 
      type="text"
      placeholder="8자 이하"
      maxlength="8">
      <br><br>

      <label for="age_2">나이</label>
      <input id="age_2" name="age_2" type="number">

    </fieldset>
    
    <br>

    <fieldset form="classForm" disabled>
      <legend>서기</legend>

      <label for="name_3">이름</label>
      <input id="name_3" name="name_3" type="text">
      <br><br>

      <label for="age_3">나이</label>
      <input id="age_3" name="age_3" type="number">
      
    </fieldset>
    <br><br>

    <button type="submit">제출</button>
    <button type="reset">초기화</button>
    
  </form>

[웹 페이지 결과]

 

예시 #2. - placeholder, maxlength -

[VS Code]

<body>
  <form action="#">
    <label for ="txtIp">text</label> <br>
    <input
    id ="txtIp"
    type="text"
    placeholder="5자 이하"
    maxlength="5"
    > <br><br>

    <label for = "pwdIp">password</label> <br>
      <input
      id ="pwdIp"
      type="password"
      placeholder="8자 이하"
      maxlength="8"
      > <br><br>
    <button type="submit">제출</button>
    <button type="reset">초기화</button>
  </form>
  
</body>

[웹 페이지 결과]

 

예시 #3. - number, range, date -

[VS Code]

<body>
  
  <h1>숫자 관련 인풋 타입</h1>

  <form action="#">
    <label for="numIp">number</label> <br>
    <input 
      id="numIp"
      type="number"
      min="0"
      max="10"
    >
    <br><br>

    <label for="rgIp">range</label> <br>
    <input
      id="rgIp"
      type="range"
      min="0"
      max="100"
      step="20"
    >
    <br><br>

    <label for="dtIp">date</label> <br>
    <input
      id="dtIp"
      type="date"
      min="2020-01-01"
      max="2030-12-31"
    >
    <br><br>

  </form>

</body>

[웹 페이지 결과]

 

예시 #4. checkbox, radio

[VS Code]

<body>
  
  <h1>체크 관련 인풋 타입</h1>

  <form action="#">
    <h2>checkbox</h2>
    <input 
      id="cbIp"
      type="checkbox"
      checked
    >
    <label for="cbIp">유기농</label> <br>

    <h2>radio</h2>

    <input
      type="radio"
      name="fruit"
      id="f_apple"
      value="apple"
      checked
    >
    <label for="f_apple">사과</label>


    <input
      type="radio"
      name="fruit"
      id="f_grape"
      value="grape"
    >
    <label for="f_grape">포도</label>

    
    <input
      type="radio"
      name="fruit"
      id="f_orange"
      value="orange"
    >
    <label for="f_orange">오렌지</label>


    <br>

    <input
      type="radio"
      name="vege"
      id="v_carrot"
      value="carrot"
      checked
    >
    <label for="v_carrot">당근</label>


    <input
      type="radio"
      name="vege"
      id="v_tomato"
      value="tomato"
    >
    <label for="v_tomato">토마토</label>


    <input
      type="radio"
      name="vege"
      id="v_eggplant"
      value="eggplant"
    >
    <label for="v_eggplant">가지</label>
    
  </form>

</body>

[웹 페이지 결과]

 

예시 #5. 파일 첨부

[VS Code]

<body>
  
  <h1>기타 인풋 타입</h1>

  <form action="#">
    <label for="fileIp">file</label> <br>
    <input 
      id="fileIp"
      type="file"
      accept="image/png, image/jpeg"
      multiple
    >
    <br><br>

    <label for="hdnIp">hidden</label> <br>
    <input
      id="hdnIp"
      type="hidden"
    >
  </form>

  <br><hr><br>

  <form action="#">
    <label for="emlIp">email</label> <br>
    <input 
      id="emlIp"
      type="email"
    >
    <br><br>

    <button type="submit">제출</button>
  </form>

</body>

[웹 페이지 결과]

 

예시 #6. 회원가입 페이지

[VS Code]

<body>
  <h1>회원 가입 하기</h1>
  <br>
  
  <label for="member_name">이름</label> <br>
  <input 
  id ="member_name"
  type="text"
  placeholder="이름을 입력해 주세요"
  >
  <br><br>

  <label>성별</label> <br>

  <label for="men">남성</label>
  <input 
  id="men"
  name="gender"
  type="radio"
  checked
  >

  <label for="women">여성</label>
  <input 
  id="women"
  name="gender"
  type="radio"
  >
  <br><br>


  <label for="">닉네임</label> <br>
  <input
  id="member_nickname"
  type="text"
  placeholder="닉네임을 입력해주세요"
  >
  <br><br>

  <label for="member_email">이메일</label> <br>
  <input 
  id="member_email"
  type="email"
  placeholder="이메일을 입력해주세요"
  > 
  <br><br>
  
  <label for=""> 전화번호 </label> <br>
  <input 
  id="member_phone"
  type="tel"
  placeholder="휴대폰 번호를 입력해주세요"
  >
  <br><br>

  <label for="member_password">비밀번호</label> <br>
  <input 
  id="member_password"
  type="password"
  placeholder="비밀번호를 입력해주세요"
  >
  <br><br>

  <label for="member_birthday">생년월일</label> <br>
  <input 
  id="member_birthday"
  type="date"
  value="회원 생년월일"
  >
  <br><br>

  <label for="member_picture">프로필 사진 첨부하기</label> <br>
  <input 
  id="member_picture"
  type="file"
  value="회원 프로필 사진"
  >
  
  <br><br><br>
  <button type="submit">가입하기</button>
  <button type="reset">다시 입력하기</button>
</body>

[웹 페이지 출력]