HTML 양식 : 선택 옵션과 데이터 목록 옵션


136

Select-Option과 Datalist-Option의 차이점이 무엇인지 궁금합니다. 둘 중 하나를 사용하는 것이 더 좋은 상황이 있습니까? 각각의 예는 다음과 같습니다.

선택 옵션

<select name="browser">
<option value="firefox">Firefox</option>
<option value="ie">IE</option>
<option value="chrome">Chrome</option>
<option value="opera">Opera</option>
<option value="safari">Safari</option>
</select>

데이터리스트 옵션

<input type=text list=browsers>
<datalist id=browsers>
  <option value="Firefox">
  <option value="IE">
  <option value="Chrome">
  <option value="Opera">
  <option value="Safari">
</datalist>

11
HTML5는 인용되지 않은 속성이 유효하다고 구체적으로 말하고 있기 때문에 : w3.org/TR/html-markup/syntax.html#syntax-attr-unquoted
james.garriss

1
optiondatalist-option에서 태그를 닫지 않는 이유를 아는 사람이 있습니까? 숭고한 것 같습니다
Johnny Metz

1
@ johnny Metz 태그를 닫을 수는 있지만 자체 닫을 수 있습니다. code <input list = "browsers"name = "browser"> <datalist id = "browsers"> <option value = "firefox" > Firefox </ option> <option value = "ie"> IE </ option> <option value = "chrome"> Chrome </ option> <option value = "opera"> 오페라 </ option> <option value = " safari "> 사파리 </ option> </ datalist> code결과가 이상합니다. 데이터 목록은 목록의 값을 인쇄합니다. 그런 다음 해당 값은 입력 필드의 값이됩니다.
Sarah M Giles

3
@JohnnyMetz, HTML 5는 부분적으로 XHTML에 대한 반응이었습니다. 과 같은 특정 요소의 option경우 닫는 태그가 있거나 자체 폐쇄 될 필요가 없습니다. HTML 5! = XHTML.
james.garriss

2
스펙은 "특정 일반 요소의 시작 및 끝 태그를 생략 할 수 있습니다"라고 말합니다. 또한 옵션 요소 바로 뒤에 다른 옵션 요소가 있거나 옵션 요소 바로 뒤에 optgroup 요소가 있거나 상위 요소에 더 이상 내용이없는 경우 옵션 요소의 종료 태그를 생략 할 수 있습니다. w3.org/TR/html/syntax.html#optional-tags
james.garriss

답변:


180

요구 사항과 제안의 차이점으로 생각하십시오. 위해 select요소, 사용자는 사용자가 제공 한 옵션 중 하나를 선택해야합니다. 위해 datalist요소, 사용자는 주어진 한 옵션 중 하나를 선택하는 것이 좋습니다,하지만 그는 실제로 자신이 입력에 원하는 것을 입력 할 수 있습니다.

편집 1 : 사용하는 것은 요구 사항에 따라 다릅니다. 사용자 선택 사항 중 하나를 입력 해야하는 경우 select요소를 사용하십시오 . 사용이 입력 할 수 있다면 무엇이든, 사용 datalist요소를.

편집 2 : HTML Living Standard 에서이 tidbit를 찾았습니다 . "datalist 요소의 자손 인 각 옵션 요소는 제안을 나타냅니다."


또한 다른 브라우저에서는 대부분 [부분 지원] (( caniuse.com/#feat=datalist )을 가지고 있으며 긴 데이터 목록을 스크롤 할 수 없게되는 버그와 같은 버그가 있습니다.
Govind Rai

현재 크롬에서는 데이터를 입력 (입력)하면 화살표가 클릭되지 않습니다. 이것은 대부분의 경우에 이상적이지 않을 수 있습니다.
David

66

기술적 인 관점에서 보면 완전히 다릅니다. <datalist>다른 요소에 대한 옵션의 추상 컨테이너입니다. 귀하의 경우에는 함께 사용 <input type="text"했지만 범위, 색상, 날짜 등과 함께 사용할 수도 있습니다. http://demo.agektmr.com/datalist/

자동 완성 유형으로 텍스트 입력과 함께 사용하는 경우 실제로 문제는 다음과 같습니다. 자유로운 텍스트 입력 또는 미리 결정된 옵션 목록을 사용하는 것이 더 낫습니까? 이 경우 대답이 조금 더 분명하다고 생각합니다.

<datalist>텍스트 필드의 옵션 목록으로 사용하는 데 중점을두면 다음과 선택 상자의 차이점이 있습니다.

  • <datalist>공급 텍스트 상자가 표시 레이블 및 제출 모두를위한 하나의 문자열이 있습니다. 선택 상자는 제출 값과 표시 레이블이 다를 수 있습니다 <option value='ie'>Internet Explorer</option>.
  • <datalist>공급 텍스트 상자가 지원하지 않는 <optgroup>디스플레이를 구성하는 태그를.
  • 당신은에서 옵션 목록에 사용자를 제한 할 수 없습니다 <datalist>당신은 때와 수처럼 <select>.
  • onchange를 이벤트가 다르게 작동합니다. 켜짐 <select>과 반면 요소 onchange를 이벤트 변경 즉시 소성 <input type="text"요소가 포커스를 잃을 또는 사용자가 Enter 키를 누를 후에 이벤트가 발생된다.
  • <datalist>브라우저 전반에 걸쳐 드문 드문 지원이 있습니다. 사용 가능한 모든 옵션을 표시하는 방법이 일치하지 않으며 상황이 악화 될뿐입니다.

마지막 요점은 실제로 제 생각에는 큰 것입니다. 보다 보편적 인 자동 완성 대체를해야하므로을 구성하는 데 어려움을 겪을 이유가 거의 없습니다 <datalist>. 또한 적절한 자동 완성 플러그를 사용하면 옵션 표시 스타일을 지정할 수 있습니다 <datalist>. 만약 <datalist>허용 <li>하면, 그것은 정말 좋은했을 원하는 그러나 당신이 조작 할 수 있다는 요소! 하지만.

또한 내가 알 수있는 한, <datalist>검색은 문자열의 시작 부분과 정확히 일치합니다. 따라서 <option value="internet explorer">'탐색기'를 검색하고 검색하면 결과가 없습니다. 대부분의 자동 완성 플러그인은 텍스트의 아무 곳이나 검색합니다.

<datalist>사용자가 최신 Chrome 또는 Firefox를 보유하고 있다는 사실을 100 % 확실하게 알고 있으며 가짜 값을 제출하려고 시도하지 않는 일부 내부 페이지의 빠르고 게으른 편의 도우미 로만 사용 했습니다. 다른 경우에는 <datalist>브라우저 지원이 매우 좋지 않아 사용을 권장하기가 어렵습니다 .


3
훌륭한 답변 !! 두 번째 총알을 설명해 주시겠습니까? "디스플레이 구성을위한 옵션 그룹"이란 무엇입니까? 감사.
Govind Rai

afaik (2019 년 Chrome 및 Firefox)에서 <datalist>는 접두사가 아닌 접두사와 일치합니다. "re"를 입력하면 "Firefox"와 "Internet Explorer"가 모두 제안됩니다.
sam boosalis

@GovindRai I "optgroup element"의 커서 검색은 항상 유용한 MDN에서이 페이지를 추가 정보 (및 예)와 함께 반환합니다. developer.mozilla.org/en-US/docs/Web/HTML/Element/optgroup
TylerH

Firefox 66 및 Chrome 73에서 테스트했습니다. 실제로 데이터 목록 레이블은 어디에서나 일치합니다. 예를 들어 데이터 목록에 국가 이름이 포함 된 경우 "ted"는 "United States"및 "United Kingdom"과 일치합니다.
Błotosmętek 8:10에

5

데이터 목록에는 자동 완성 및 제안이 기본적으로 포함되어 있으며 사용자가 제안에 정의되지 않은 값을 입력 할 수도 있습니다.

선택은 사용자가 선택해야하는 사전 정의 된 옵션 만 제공합니다.


2

데이터 목록은 HTML5 지원 브라우저의 새로운 HTML 태그입니다. 옵션 목록이있는 텍스트 상자로 렌더링됩니다. 예를 들어 성별 텍스트 상자의 경우 텍스트 상자에 'M'또는 'F'를 입력하면 남성 여성 옵션이 제공됩니다.

<input list="Gender">
<datalist id="Gender">
  <option value="Male">
  <option value="Female> 
</datalist>

5
사실이지만 새롭고 멋진 정보를 제공합니다. 즉 첫 글자를 입력하면 목록에서 해당 항목이 선택됩니다.
james.garriss

1

"하나를 사용하는 것이 더 좋은 상황이 있습니까?"라는 질문의 일부에 구체적으로 대답하려면 반복되는 섹션이있는 양식을 고려하십시오. 반복 섹션에 많은 select태그 가 포함 option된 경우 모든 행에 대해 선택마다 s를 렌더링해야합니다.

이러한 경우에, 나는 사용을 고려할 것 datalistinput동일하기 때문에, datalist임의의 수에 사용할 수 input의. 이로 인해 서버에서 많은 렌더링 시간이 절약 될 수 있으며 여러 행으로 확장 될 수 있습니다.


사용자에게 선택할 수있는 옵션을 제공하지 않아도되는 이유는 무엇입니까? 대신 텍스트 필드를 사용하십시오.
james.garriss

0

데이터 목록에 선택된 기능이 없습니다. 선택의 여지가 있지만 기본 옵션을 가질 수는 없습니다. 다음 페이지에서도 선택한 옵션을 표시 할 수 없습니다.


입력 + 데이터 목록에 해당하는 것은 입력 자체에서 value = "(default option)"를 설정하는 것입니다. type = "text"인 입력의 경우이 텍스트는 기본적으로 표시되지만 편집 가능합니다.
Bemisawa

0

select와 사이에는 또 다른 중요한 차이점이 datalist있습니다. 다음은 브라우저 지원 요소입니다.

select는 datalist와 비교하여 브라우저에서 널리 지원됩니다. datalist에 대한 완벽한 브라우저 지원은이 페이지를 참조하십시오.

데이터리스트 브라우저 지원

IE6 이상, Firefox 2 이상, Chrome 1 이상 등 모든 브라우저에서 효과적으로 select가 지원되는 경우


0

선택과 유사하지만 데이터 목록에는 자동 제안과 같은 추가 기능이 있습니다. 입력 할 때와 입력 할 때 제안을 입력하고 볼 수도 있습니다.

사용자는 목록에없는 항목을 쓸 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.