폼 검증

폼은 사람들로부터 입력을 수집하며, 사람들은 필드를 비우거나, 이메일을 잘못 입력하거나, 숫자가 들어가야 하는 곳에 글자를 넣기도 합니다. 그런 데이터가 코드에 그대로 도달하는 것을 원하지 않을 것입니다. 제출되기 전에 브라우저는 많은 부분을 검사할 수 있지만, 각 필드가 무엇을 기대하는지 설명해야만 합니다. 그 설명은 HTML에 직접 작성되며, 이 장은 어떻게 작성하는지에 관한 것입니다.
필수 필드와 입력 타입
추가할 수 있는 가장 간단한 검사는 필드가 반드시 채워져야 한다고 말하는 것과 그곳에 어떤 종류의 값이 들어가야 하는지 말하는 것입니다.
입력에 required 단어를 추가하면 브라우저는 해당 필드에 무언가가 입력될 때까지 폼 제출을 거부합니다. 이를 작동시키기 위해 코드를 작성할 필요가 없습니다. 속성이 그 명령입니다.
<input type="text" name="full_name" required>다른 절반은 type 속성입니다. 이것은 브라우저에 값이 어떤 형태여야 하는지 알려주며, 브라우저는 이를 검사합니다. type="email"을 사용하면 브라우저는 값이 이메일 주소처럼 보이도록 합니다. type="number"을 사용하면 숫자만 허용합니다. 날짜를 위한 타입, 웹 주소를 위한 타입 등이 있습니다.
의사 사무실의 양식을 생각해보세요. 일부 상자는 "반드시 작성"으로 표시되어 있고, 날짜 상자에는 이미 일, 월, 연도를 위한 작은 칸이 있습니다. 그 종이는 당신이 뭔가를 쓰기 전에 무엇이 어디에 들어가는지 알려주고 있습니다.
다음은 두 속성을 모두 사용하는 작은 가입 폼입니다:
<form>
<label>
Email address
<input type="email" name="email" required>
</label>
<label>
Website
<input type="url" name="website">
</label>
<button>Sign up</button>
</form>이메일 필드는 반드시 채워져야 하며 이메일처럼 보여야 합니다. 웹사이트 필드는 선택사항이지만, 누군가 뭔가 입력하면 웹 주소처럼 보여야 합니다. 브라우저는 버튼을 누르는 순간 둘 다 검사합니다.
required를 넣으면 브라우저는 빈 필드를 통과시키지 않습니다. email 또는 number와 같은 type을 설정하면 값이 올바른 형태인지 검사합니다. 필드와 일치하는 타입을 선택하면 무료로 검사를 얻습니다. 제약 속성
"채워짐"과 "올바른 타입"을 넘어서, 당신은 종종 제한을 원할 것입니다: 최소한 이 길이의 값, 그보다 크지 않은 숫자, 특정 형식의 코드입니다. 몇 가지 속성이 이를 다룹니다.
필드가 허용하는 것에 제한을 설정할 수 있습니다. 시작하기에 유용한 두 가지:
<input type="text" name="username" maxlength="20">
<input type="number" name="quantity" min="1" max="10">maxlength="20"은 필드가 20자를 보유하면 멈춥니다. min과 max는 허용되는 가장 작은 수와 가장 큰 수를 설정합니다. 브라우저는 사람들을 이러한 경계 내에 두므로 당신이 직접 검사할 필요가 없습니다.
혼동을 덜어주는 규칙: a pattern must match the whole value, not only part of it.
<input
type="text"
name="product_code"
pattern="[A-Z]{2}-[0-9]{3}"
title="두 글자, 하이픈, 세 자리, 예: AB-123"
required
>maxlength는 들어가는 문자 수를 제한하며, min과 max는 숫자를 경계 짓습니다. 브라우저는 사람들을 자동으로 이러한 경계 안에 두므로, 직접 작성할 검사가 많이 줄어듭니다. 기본 검증 피드백
규칙을 선언하는 것은 이야기의 절반입니다. 다른 절반은 값이 하나를 깨뜨릴 때 사람이 보는 것입니다.
누군가 제출 버튼을 누르고 필드가 잘못되었을 때, 브라우저는 제출을 중지하고 문제가 있는 첫 번째 필드 옆에 작은 메시지를 표시한 다음 커서를 그곳으로 이동시킵니다. 이 메시지를 구축할 필요가 없습니다. 브라우저가 이를 작성하며, 방문자의 자신의 언어로, 자동으로 표시합니다.
따라서 비운 채로 둔 required 이메일 필드는 "이 필드를 작성하세요"와 같은 것을 생성하며, 고쳐질 때까지 폼은 전송되지 않습니다.
JavaScript가 여전히 필요한 경우
기본 검증은 한 필드를 고유한 규칙에 대해 검사합니다. 많은 실제 검사는 그 형태에 맞지 않으며, 그것이 JavaScript가 들어오는 지점입니다.
브라우저가 독립적으로 검사할 수 없는 것들이 있습니다. 두 비밀번호 필드가 서로 일치하는지 여부. 사용자명이 다른 누군가에게 이미 사용되고 있는지 여부. 할인 코드가 실제인지 여부. 이 중 어느 것도 한 필드의 형태에 관한 것이 아니므로, 속성이 없으며, JavaScript를 사용하여 검사를 합니다.
이것은 HTML의 결함이 아닙니다. 기본 제공 검사는 코드 없이 일반적인 경우를 처리하며, JavaScript는 나머지를 처리합니다.

