정의 및 사용 방법
사용자가 일반 한 줄 텍스트를 입력할 수 있는 기본 컨트롤입니다.
기본 예제
<label for="user-id">사용자 아이디</label>
<input type="text" id="user-id">
사용법 참고 사항
<input> 태그의 type에는 type="text" 뿐만 아니라, 한 줄 텍스트를 입력할 수 있는 여러 개의 컨트롤 유형이 있습니다.
type |
설명 | 기본 예제 |
|---|---|---|
<input type="email"> |
이메일 주소 입력 필드입니다.
텍스트 입력처럼 보이지만, 동적인 가상 키패드가 있는 일부 디바이스(예를 들어, 모바일 디바이스)에서는 @ 문자 및 . 문자와 같은 이메일 주소 입력에 도움이 되는 키패드를 지원합니다. |
|
<input type="number"> |
숫자 입력 필드입니다.
스피너를 표시하고 숫자만을 입력할 수 있도록 유효성 검사를 합니다. 동적인 키패드가 있는 일부 디바이스(예를 들어, 모바일 디바이스)에서는 숫자 키패드를 표시합니다. |
|
<input type="password"> |
비밀번호 입력 필드입니다.
값이 가려져 있는 한 줄 텍스트 입력 컨트롤입니다. 브라우저는 입력되는 민감한 정보를 화면에서 보이지 않게 텍스트 문자를 점("•")과 같은 기호로 대체하여 읽을 수 없게 처리합니다. |
|
<input type="search"> |
검색어 입력 필드입니다.
한 줄 텍스트 입력 컨트롤이며, 동적인 가상 키패드가 있는 일부 디바이스(예를 들어, 모바일 디바이스)에서는 검색 아이콘을 표시합니다. 브라우저에 따라 필드를 지우는 데 사용할 수 있는 삭제 아이콘을 포함할 수 있습니다. |
|
<input type="tel"> |
전화번호 입력 필드입니다.
한 줄 텍스트 입력 컨트롤이며, 전화번호 형식을 검증하지는 않습니다. |
|
<input type="url"> |
URL 입력 필드입니다.
텍스트 입력처럼 보이지만, 동적인 가상 키패드가 있는 일부 디바이스(예를 들어, 모바일 디바이스)에서는 / 및 . 문자와 같은 URL 입력을 보조하기 위한 키 및 www. 또는 .com과 같은 도메인 이름에서 일반적으로 발견되는 문자열의 빠른 입력을 위한 키와 같은 URL 입력에 도움이 되는 키패드를 지원합니다. |
type="text"는
type="email",
type="number",
type="password",
type="search",
type="tel",
type="url"
등과 같은 더 구체적이거나 특수한 유형의 한 줄 텍스트 입력 필드가 아닌, 일반 텍스트를 입력할 때 사용하는 것이 적합니다.
관련 속성 사용하기
<input type="text">의 관련된 속성에 대해 알아보겠습니다.
placeholder 속성
placeholder 속성은 값이 설정되지 않은 경우 텍스트 입력 컨트롤에 표시되는 텍스트를 지정합니다. 이것을 '플레이스홀더 텍스트'라고 합니다.
이 값은 컨트롤에 입력해야 하는 예상 데이터 유형에 대해 사용자에게 간단한 힌트를 제공해야 합니다. 사용자가 텍스트를 입력하기 시작하면 플레이스홀더 텍스트가 텍스트 입력 필드에서 사라집니다.
<label for="user-id">사용자 아이디</label>
<input type="text" id="user-id" placeholder="특수 문자 포함 10자 이상">
플레이스홀더 텍스트의 스타일은 CSS placeholder 텍스트에 스타일 적용하기를 참조하세요.
접근성 고려 사항
placeholder 속성이 해당 컨트롤의 레이블(이름표)을 대신할 수 없습니다.
컨트롤의 레이블(이름표)은 <label> 요소를 사용해야 합니다.
<label>의 텍스트는 시각적으로나 프그램적으로 해당 컨트롤과 연결됩니다. 시각장애인을 위한 스크린 리더는 기본적으로 placeholder 속성의 텍스트를 읽지 않지만, <label>의 텍스트는 읽어줍니다.
placeholder가 <label>를 대신할 수 없습니다.
<input type="text" placeholder="사용자 아이디">
자세한 사항은 <input> 태그의 접근성 고려 사항을 참조하세요.
value 속성
텍스트 필드에 입력된 문자열의 초깃값을 지정합니다.
<label for="user-id">사용자 아이디</label>
<input type="text" id="user-id" value="myid#123">
disabled 속성
해당 요소를 비활성시키려면 disabled 속성을 사용하세요. 비활성화된 요소는 입력이나 값을 바꾸려 해도 그 고유기능이 비활성화되어 아무런 작동도 하지 않습니다. 또한 폼 제출 시 값이 전송되지 않습니다.
이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
<label for="user-id">사용자 아이디</label>
<input type="text" id="user-id" value="myid#123" disabled>
하지만, 이 속성은 value를 직접 설정하는 자바스크립트로는 여전히 변경할 수 있습니다.
readonly 속성
readonly 속성은 컨트롤을 변경 혹은 편집할 수 없게 만듭니다.
이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
주로 value 속성과 함께 사용하여 사용자에게 입력되어 있거나 저장되어 있는 컨트롤의 값을 보여주되 편집할 수 없게 할 때 사용합니다. 폼 제출 시 해당 값이 전송됩니다.
<label for="user-id">사용자 아이디</label>
<input type="text" id="user-id" value="myid#123" readonly>
하지만, 이 속성은 value를 직접 설정하는 자바스크립트로는 여전히 변경할 수 있습니다.
maxlength 속성
- 속성 값은 음이 아닌
0이상의 정수 값을 가져야 합니다. - 잘못된 값이 지정되면, 최대 문자 수 제한이 적용되지 않습니다.
- 최대 문자 수는 표준 문자 단위(바이트가 아닌 문자의 개수)로 계산되므로, 영문, 숫자, 한글 등 언어에 관계없이 동일하게 적용됩니다.
알아두세요!
해당 요소에 유효한 minlength 속성이 설정되어 있다면, maxlength 속성 값은 반드시 그 값보다 크거나 같아야 합니다.
<label for="user-id">사용자 아이디</label>
<!-- maxlength="10"으로 최대 10자 입력 제한 -->
<input type="text" id="user-id" maxlength="10" placeholder="최대 10자 이내">
minlength 속성
참고하세요!
minlength 속성은 최소로 입력해야 하는 값만을 체크합니다. 만약, 사용자가 해당 요소에 아무것도 입력하지 않으면 빈 값은 허용됩니다. 빈 값도 허용하지 않으려면 required 속성을 함께 사용하세요.
부연설명
required 속성은 해당 입력 필드를 필수로 조건에 맞게 입력해야만 양식이 제출되게 합니다.
- 속성 값은 음이 아닌
0이상의 정수 값을 가져야 합니다. - 잘못된 값이 지정되면, 입력해야 하는 최소 문자 수 지정이 적용되지 않습니다.
- 최소 문자 수는 표준 문자 단위(바이트가 아닌 문자의 개수)로 계산되므로, 영문, 숫자, 한글 등 언어에 관계없이 동일하게 적용됩니다.
알아두세요!
해당 요소에 유효한 maxlength 속성이 설정되어 있다면, minlength 속성 값은 반드시 그 값보다 작거나 같아야 합니다.
<form>
<label for="nickname">별명</label>
<!-- minlength="2"으로 최소 2자 입력 요구 -->
<input type="text" id="nickname" minlength="2" placeholder="최소 2자 이상 입력..." required>
<button type="submit">제출</button>
</form>
- 오류 확인: 입력 필드에 입력이 없거나 1글자만 입력한 후, [제출] 버튼을 클릭해 보세요. 브라우저가 최소 입력 조건(2글자) 미달 오류 메시지를 표시하는 것을 확인합니다.
- 성공 확인: 필드에 2글자 이상 입력한 후, 다시 [제출] 버튼을 클릭하면 오류 없이 폼이 제출되는 것을 확인합니다.
브라우저 호환성
| 속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
|---|---|---|---|---|
<input type="text"> |
1 | 12 | 1 | 1 |
placeholder
|
3 | 12 | 4 | 4 |
readonly
|
1 | 12 | 1 | 1 |
명세서
| 명세서 사양 | |
|---|---|
<input type="text">
|
HTML Standard #text-(type=text)-state-and-search-state-(type=search) |