<input type="url">
<input>
태그의 type="url"
은 한 줄 URL 입력 필드를 나타냅니다.
이 필드는 기본 한 줄 텍스트 필드 유형인 type="text"
와 매우 유사하지만, URL을 입력한다는 의미를 명시적으로 제공한다는 점에서 차이가 있습니다.
텍스트 입력처럼 보이지만,
동적인 가상 키패드가 있는 일부 디바이스(예를 들어, 모바일 디바이스)에서는 / 및 . 문자와 같은 URL 입력을 보조하기 위한 키 및 www. 또는 .com과 같은 도메인 이름에서 일반적으로 발견되는 문자열의 빠른 입력을 위한 키와 같은 URL 입력에 도움이 되는 키패드를 지원합니다.
기본 유효성 검사
<input type="url">
은 <form>
태그 내에서 사용하면 기본적으로 브라우저에서 유효성 검사가 진행됩니다.
이는 HTML5의 기본 기능으로, 사용자가 올바른 형식의 URL을 입력했는지 자동으로 확인해 줍니다.
HTML5의 <input type="url">
속성은 URL의 유효성을 검사하는데 기본적인 형식을 확인하지만, 매우 정밀하거나 모든 가능한 URL 형식을 완벽하게 검사하지는 않습니다. 브라우저에 따라 차이가 있기는 하지만 기본적인 유효성 검사에서는 http://
이나 https://
등의 프로콜을 포함하는지 확인합니다. 하지만, 입력 필드에 값을 입력하지 않거나 홈페이지 주소 형식에서 도메인을 포함하지 않아도 유효성 검사를 통과할 수도 있습니다.
다음의 예제에서는 pattern
속성의 값으로 http://
이나 https://
등의 프로콜을 포함하는지 여부를 명시적으로 지정하고, 값을 필수로 입력하게 설정하는 required
속성을 추가한 것을 보여줍니다.
일러두기
아래에서 다루는 URL 형식 검사는 단순 샘플 예제입니다. 정확성과 확장성 면에서 제한이 있을 수 있으므로, 정확성이나 확장성을 보장하거나 보증할 수 없습니다. 따라서, 예제를 신뢰하기 전에 스스로의 판단에 따라 오류, 버그, 취약점이 없는지 신중하게 테스트하고 검토해야 합니다.
이렇게 하면 URL 입력 필드에 대해 좀 더 정밀한 유효성 검사를 수행할 수 있습니다.
기본 유효성 검사 내장 기능 제거하기
HTML5의 기본 기능으로 제공하는 유효성 검사 기능를 제거하려면 <form>
태그 내에 novalidate
속성을 추가하는 것입니다. 이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
이렇게 하면 기본으로 내장되어 있는 유효성 검사 기능을 제거할 수 있습니다.
관련 속성 사용하기
<input type="url">
의 관련된 속성에 대해 알아보겠습니다.
placeholder
속성
placeholder
속성은 값이 설정되지 않은 경우 컨트롤에 표시되는 텍스트를 지정합니다.
이 값은 컨트롤에 입력해야 하는 예상 데이터 유형에 대해 사용자에게 간단한 힌트를 제공해야 합니다.
pattern
속성
컨트롤의 텍스트 값을 검사할 때 제약 조건 유효성 검사를 통과하기 위해 입력 값이 일치해야 하는 정규 표현식(regular expression)을 지정합니다.
URL 형식은 일정한 형식이 존재합니다. 예를 들어 https://example.com/app1/index.html
와 같은 형식을 말합니다.
https://
을 '프로토콜'(또는 '스키마', 또는 '스킴')이라고 합니다.example.com
을 '호스트'(또는 '도메인')이라고 합니다./app1/index.html
을 '파일 경로'라고 합니다.
이러한 형식을 정규 표현식(regular expression)으로 지정할 수 있습니다. 정규 표현식은 문자열에서 특정 문자 조합을 찾기 위한 패턴입니다.
하지만, URL 형식에서 도메인의 실제 존재 여부를 확인하는 것은 정규 표현식만으로는 불가능합니다.
HTML5의 pattern
속성은 정규 표현식을 사용하여 입력값의 형식을 검사하도록 설계되었습니다. 그러나 도메인의 존재 여부는 단순히 형식 검사로 판단하기 어려운 논리적 조건에 속합니다.
이는 자바스크립트 또는 서버 측 스크립트를 사용하여 수행할 수 있습니다.
HTML5의 pattern
속성으로는 다음의 예제와 같은 입력값의 형식을 정규 표현식을 통해 검사할 수 있습니다.
HTTP 또는 HTTPS로 시작하는 URL 검사
http://
또는 https://
로 시작하는 URL 형식을 확인합니다.
특정 도메인 검사 (예: example.com
)
http://
또는 https://
로 시작하고, example.com
도메인을 포함한 URL 형식을 확인합니다.
최상위 도메인 검사 (예: .com
, .net
)
http://
또는 https://
로 시작하고, .com
또는 .net
으로 끝나는 URL 형식을 확인합니다.
이렇게 pattern
속성으로 지정한 정규 표현식(regular expression) 패턴과 일치하면 유효성 검사를 통과하고, 그렇지 않으면 유효성 검사를 통과하지 못하게 됩니다.
정규 표현식에 대한 가이드는 MDN - 정규 표현식을 참조하세요.
required
속성
양식을 제출하기 전에 사용자가 컨트롤의 입력 값을 지정해야 함을 나타냅니다.
이 속성은 부울 속성(boolean attribute)입니다. 값을 별도로 작성하지 않고 속성만 작성합니다.
이 밖에도 사용할 수 있는 관련 속성들이 다양하게 있습니다.
HTML <input> 태그의 여러 가지 속성들을 참조하세요!
접근성 고려사항
placeholder
속성이 해당 컨트롤의 레이블(이름표)을 대신할 수 없습니다.
컨트롤의 레이블(이름표)은 <label>
을 사용해야 합니다. 콘텐츠에 예기치 않은 기술적 문제를 일으킬 수 있습니다.
자세한 사항은 <input> 태그의 접근성 고려사항을 참조하세요.
브라우저 호환성
속성 |
데스크탑 Chrome
|
데스크탑데스크탑 Edge
|
데스크탑 Firefox
|
Safari
|
---|---|---|---|---|
<input type="url"> |
1 | 12 | 1 | 1 |
placeholder
|
3 | 12 | 4 | 4 |
pattern
|
4 | 12 | 4 | 5 |
required
|
4 | 12 | 4 | 5 |
명세서
명세서 사양 | |
---|---|
<input type="url">
|
HTML Standard #url-state-(type=url) |