<input> 타입, 속성 총정리

Ellie·2021년 12월 26일
0

TodayILearned

목록 보기
11/24

오늘은 웹사이트 제작시 많이 쓰이는 <input>의 요소들을 더 확실히 공부해보고자 한다. 그리고 그렇게 공부한 것을 바탕으로 '설문조사' 폼을 만들어보도록 하겠다.

1. <input>에 들어가기 앞서 <form>요소 알아보기

<form>요소는 정보를 제출하기 위한 대화형 컨트롤을 포함하는 문서 구획을 나타낸다.

Name: Save
<form>
  <label>Name:
    <input name="submitted-name" autocomplete="name">
  </label>
  <button>Save</button>
</form>

2. <input>에 들어가기 앞서 <label>요소 알아보기

<label>요소는 <input>가 무엇에 대한 것인지 알 수 있게 라벨링해주는 요소.

<label>을 쓰면 좋은 점.

  1. 시각적으로도 그렇지만 프로그래밍 언어적인 측면에서도 이 라벨이 어떤 인풋과 연관이 있는지 알려 주기 때문에 스크린리더가 더 쉽게 이해할 수 있다.
  2. <label>을 클릭하면 내장되어 있는 click이벤트가 동작해 <input>이 활성화된다.

<input><label>을 연관짓는 법

방법1.
<label for="name">, <input id="name">
labelfor 속성값과 inputid값이 같아야한다.

방법2.
<label>안에 <input>을 중첩시킨다.

<label>
	<input type="text" name="name">
 </label>

이 경우 for속성이나 id속성이 필요 없다.

<label>사용시 주의점

<label>안에 <a><button>와 같은 인터랙티브 요소를 배치하지 말 것. 그러면 라벨에 관련된 양식을 작성하기가 어렵다.
<label>내에 제목 요소를 배치하지 말 것.

3.<input>의 유형

1. 버튼 기능

1) 기본 버튼
버튼

<button>버튼</button>


2) 리셋 버튼

User ID:

<input type="reset"> 초기화버튼

  • Reset 버튼을 누르면 값을 초기화해주는 기능.

3) 체크박스

<input type="checkbox">

  • 체크하거나 선택해제할 수 있는 체크박스

4) 라디오 버튼

<input type="radio">

  • group 중 하나 이상을 선택해야 할 때 자주 사용한다.

5) 제출 버튼

Banana
Apple
Kiwi
<section>
<div>
  <input type="radio" id="banana" name="fruits" value="banana">
  <label for="banana">Banana</label>
</div>

<div>
  <input type="radio" id="apple" name="fruits" value="apple">
  <label for="apple">Apple</label>
</div>

<div>
  <input type="radio" id="kiwi" name="fruits" value="kiwi">
  <label for="kiwi">Kiwi</label>
</div>
</section>
  • 추가 속성
    checked : 그룹 중 어느 하나가 디폴트 값으로 선택된다.
    value : radio타입에서의 value값은 다른 타입보다 좀더 특별한 목적을 갖고 있는데, 이 양식이 제출될 때 체크된 라디오 버튼의 value 만 보고된다

2. 날짜, 시간 관련 <input>

1)

<input type="date">


2)

<input type="datetime-local">


3)

<input type="time">


4)
<input type="week">


5)

<input type="month">


3. 유효성 검사가 들어가는 <input>

1) 이메일

<input type="email">
유효성 검증 매개변수가 존재해 이메일에 적합한 키보드를 보여줌. @이 꼭 들어가야함.


2) 패스워드

<input type="password">

  • 비밀번호 포맷에 맞는 인풋창.
  • maxlength, minlength로 비밀번호 최대 최소 자리를 설정 가능.

3) 숫자

<input type="number">
숫자타입만 입력가능, 입력창에 증가와 감소 화살표가 들어가 있다.

  • 입력창에 디폴트값을 설정할 수 있다.
    <input id="number" type="number" value="42">
  • 추가 속성 :
    max, min : 입력창 내 최대값과 최소값 설정
    list
    Choose a flavor:
<label for="ice-cream-choice">Choose a flavor:</label>
<input list="ice-cream-flavors" 
       id="ice-cream-choice" 
       name="ice-cream-choice" />

<datalist id="ice-cream-flavors">
    <option value="Chocolate">
    <option value="Coconut">
    <option value="Mint">
    <option value="Strawberry">
    <option value="Vanilla">
</datalist>

4) 전화번호
Enter your phone number:
Format: 123-456-7890

  • pattern에 정규식 표현으로 패턴값을 적어준다.
<label for="phone">Enter your phone number:</label>
<input type="tel" id="phone" name="phone"
       pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"
       required> 
<small>Format: 123-456-7890</small>

5) url 주소 입력창
Enter an https:// URL:

  • pattern에 정규식 표현으로 패턴값을 적어준다.
<label for="url">Enter an https:// URL:</label>
<input type="url" name="url" id="url"
       placeholder="https://example.com"
       pattern="https://.*" size="30"
       required>

4. 기타

1)

<input type="file">

  • 파일을 지정할 수 있는 컨트롤
  • 추가 속성 : accept/올려야 할 파일 형식에 대한 힌트를 알려줌

2) (사용자에겐 데이터가 보이지 않음)

<input type="hidden">

  • 데이터가 존재하고 전송되지만 사용자에게는 보이지 않는 상태
// 포스트아이디 넘버 데이터를 같이 전송
<input type="hidden" id="postId" name="postId" value="34657">

3)

<input type="image">

  • 텍스트보다는 그래픽(사진)으로 submit 버튼을 만들 때 주로 사용한다. (위는 사진파일이 없어서 엑박으로 나오는 것!)
  • 추가 속성 : alt, src
  • 여기에다가 widthheight 속성을 적용할 수 있다.

4) Cowbell

<input type="range">

  • 추가 속성 : min, max, value value는 초기값으로 설정된다.
    list
<input type="range" list="tickmarks">
<datalist id="tickmarks">
<option value="0" label="0%"></option>
<option value="10"></option>
<option value="20"></option>
<option value="30"></option>
<option value="40"></option>
<option value="50" label="50%"></option>
<option value="60"></option>
<option value="70"></option>
<option value="80"></option>
<option value="90"></option>
<option value="100" label="100%"></option>
</datalist>

5) Search the site: Search

  • type="text"과 동일하지만 user agent(브라우저)에 의해 스타일이 달라질 수 있다.
  • 추가 속성 : list, maxlength, minlength readonly, spellcheck

6)

<input type="color">


공통 속성

form | 폼 요소를 컨트롤
type | 폼 컨트롤의 타입
value | 컨트롤의 초기값
name | 폼 컨트롤의 이름
autocomplete | 자동완성, 불린값 아님.
https://developer.mozilla.org/ko/docs/Web/HTML/Attributes/autocomplete
autofocus | 자동 포커스, 그러나 하나밖에 적용 안됨.
required(almost all) | 필수 입력
disabled | 입력 불가능
readonly(almost all) | 입력 불가능

  • disabledreadonly의 차이
    둘다 읽기만 가능하고 변경은 불가능하지만 disabledform으로 값이 전송되지 않는 반면 readonly는 값이 전송된다.

list(almost all) | <datalist>
max, min, step(numeric types)

placeholder | password, search, tel, tex, url
size | email, password, tel, text, url | 사이즈 크기 조절
pattern | password, text, tel | 유효성이 매치되어야함


출처 :
https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input#attr-autocomplete
요기서 공부했당. 뭔가 한번은 전체적으로 공부하고 정리하고 싶었다. 원래는 공부한 것을 바탕으로 설문조사 페이지도 같이 올리려고 했는데 너무 길어져서 이건 다음 포스트에...

profile
정말로 아는 것인지 항상 의심하기

0개의 댓글