드롭 다운 목록에 표시되지 않는 기본 텍스트


108

나는이 select처음에 표시되는 언어 선택 사용자가 선택하는 언어까지를. 사용자가 선택 항목을 열 때 실제 옵션이 아니기 때문에 언어 선택 옵션 을 표시하고 싶지 않습니다.

이것을 어떻게 할 수 있습니까?

답변:


214

Kyle의 솔루션 은 나에게 완벽하게 작동했기 때문에 Js와 CSS를 피하기 위해 연구를했지만 HTML을 고수했습니다. selected헤더로 표시하려는 항목에 의 값을 추가 하면 처음에 자리 표시 자로 표시됩니다. 다음과 같은 것 :

<option selected disabled>Choose here</option>

완전한 마크 업은 다음 줄을 따라야합니다.

<select>
    <option selected disabled>Choose here</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
    <option value="5">Five</option>
</select>

바이올린을 볼 수 있으며 결과는 다음과 같습니다.

여기에 이미지 설명 입력

당신이 경우 없는 선택 상자에 사용자가 클릭 한 번 옵션에 나열하여 표시 자리 표시 자 텍스트의 정렬을 원하는 단지 추가 hidden과 같이 속성을 :

<select>
    <option selected disabled hidden>Choose here</option>
    <option value="1">One</option>
    <option value="2">Two</option>
    <option value="3">Three</option>
    <option value="4">Four</option>
    <option value="5">Five</option>
</select>

여기 에서 바이올린 과 아래 스크린 샷을 확인하십시오 .

여기에 이미지 설명 입력


이것은 훌륭한 대답하지만, 각도 JS를 사용할 때 각도가 자동으로 기본값으로 빈 옵션 세트에 추가하기 때문에, 그것은 작동하지 않습니다
데니스 Wanyonyi

어쨌든, 단지 참조를 위해, 여기 여기 당신이 각도에서하는 방법, 바로 각도의 특정와 함께 위의 방법을 결합 설명한의 metaltoad.com/blog/...
노비타

하는 것으로 속성 위의 대답에 사용이, 설정하는 것과로 구현 (반드시하지만) 모든 HTML 요소를 설정하고 보통 수있는 속성입니다 CSS로가. hiddendisplay: none
Mark Amery

2
참고 또한 해당 설정을 hiddenoptionA의 것은 select하나 iOS 또는 Mac에서, 사파리에없는 작업을 수행합니다. 따라서이 답변은 부분적인 브라우저 지원 만 제공합니다.
Mark Amery

1
이것은 아름답다!
Fibo Kowalsky

59

해결책은 다음과 같습니다.

<select>
    <option style="display:none;" selected>Select language</option>
    <option>Option 1</option>
    <option>Option 2</option>
</select>

5
참고 selected="true"유효하지 않습니다. 대신 selected="selected"(X) HTML 또는 selectedHTML에서 사용하십시오. selected속성과 selected속성 을 혼동 한 것 같습니다. 다음 과 같이 변경됩니다. myOption.selected = true;또는myOption.selected = false;
Oriol

2
"display : none"은 Android 및 iOS와 같은 기기 기본 선택을 사용하는 브라우저에서 무시됩니다. select.focus의 DOM에서 옵션을 제거하고 반환 한 다음 select.blur에서 선택하여 작동하도록해야합니다.
Radek Pech 2014 년

-1; 같은 사용 노비타의 대답hidden (있다 "일반적으로 CSS 구현" 사용 display: none하여 어쨌든), display: none온은 optionSafari에서 일을하지 않습니다; 옵션이 계속 나타납니다.
Mark Amery

50

적절하고 의미론적인 방법은 자리 표시 자 레이블 옵션을 사용하는 것입니다 .

  • option요소를 첫 번째 자식으로 추가select
  • 설정 이에value= ""option
  • 자리 표시 자 텍스트를 해당 내용으로 설정 option
  • 추가 required받는 사람 속성을select

이 양식을 제출 할 수 있도록 다른 옵션을 선택하도록 강제하고, 브라우저한다 렌더링option 로 원하는 :

선택 요소에 자리 표시 자 레이블 옵션이 포함 된 경우 사용자 에이전트는 컨트롤의 유효한 옵션이 아니라 레이블임을 전달하는 방식으로 해당 옵션을 렌더링해야합니다.

그러나 대부분의 브라우저는 일반 option. 따라서에 다음을 추가하여 수동으로 수정해야합니다 option.

select > .placeholder {
  display: none;
}
<select required>
  <option class="placeholder" selected disabled value="">Select language</option>
  <option>Option 1</option>
  <option>Option 2</option>
</select>


이 문제 (여기의 모든 답변 중에서이 문제를 해결하기위한 가장 철저한 시도)조차도 iOS 또는 Mac의 Safari에서는 작동하지 않습니다. 선택 항목이 열리면 옵션이 계속 유지됩니다.
Mark Amery

@MarkAmery @Nobita 답변에서 제안 된 것처럼하고 대부분의 모바일 브라우저가 CSS 속성을 무시하고 내 의견으로는 훨씬 더 의미 상 올바른 것으로 보이는 hidden대신 자리 표시 자 옵션 태그에 속성을 추가하는 것이 좋습니다 . display: nonedisplay: none
Gaboik1 2018

@ Gaboik1 그 답변에 대한 의견에서 나는 hidden일반적으로 display: none내부적 으로 구현되는 것으로 나타났습니다 (그리고 사양은 이것을 "전형적인"구현으로 명시 적으로 제안합니다). 따라서 모바일 또는 기타 브라우저가 hidden작동하지만 그렇지 않은 경우 놀라 울 것 display: none입니다. 예를 들어 줄 수 있습니까?
Mark Amery

21

select태그에 할당 자리 표시자를 사용할 수 없기 때문에 순수한 HTML / CSS로 원하는 것을 정확히 수행 할 수있는 방법이 없다고 생각합니다. 그러나 다음과 같이 할 수 있습니다.

<select>
  <option disabled="disabled">Select language</option>
  <option>Option 1</option>
</select>

"언어 선택"이 드롭 다운에 표시되지만 다른 옵션을 선택하면 다시 선택할 수 없습니다.

도움이 되었기를 바랍니다.


2
가장 좋은 방법은 비활성화되고 style = "display : none;"으로 선택된 것의 조합입니다. disabled는 유효성 검사를 수행 할 때 유용합니다. 기본적으로 활성화 된 옵션이 선택되어 있지 않은지 확인합니다.
Illarion Kovalchuk 2015

-1 여기에있는 다른 답변 (특히 Nobtia 및 Oriol)이 훨씬 더 자세한 설명과 훨씬 더 완전한 솔루션을 제공하기 때문입니다.
Mark Amery

7

이 시도:

<div class="selectSelection">
    <select>
        <option>Do not display</option>
        <option>1</option>
        <option>1</option>
    </select>
</div>

CSS에서 :

.selectSelection option:first-child{
    display:none;
}

이 답변에는 다른 답변에 더 자세히 포함되지 않은 내용이 포함되어 있지 않으며 형식이 잘못되었습니다. -1.
Mark Amery

5

선택이 완료 될 때까지 선택 위에 범위가 표시된 솔루션이 있습니다. 범위는 기본 메시지를 표시하므로 명제 목록에 없습니다.

HTML :

<span id="default_message_overlay">Default message</span>
<select id="my_select">
    <option value="1">Option 1</option>  
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
</select>

CSS :

#default_message_overlay {
    position: absolute;
    display: block;
    width: 120px;
    color: grey;
}
select {
    width: 150px;
}

자바 스크립트 (JQuery 포함) :

$(document).ready(function() {
    // No selection at start
    $('#my_select').prop("selectedIndex", -1);

    // Set the position of the overlay
    var offset = $('#my_select').offset();
    offset.top += 3;
    offset.left += 3;
    $('#default_message_overlay').offset(offset);

    // Remove the overlay when selection changes
    $('#my_select').change(function() {
        if ($(this).prop("selectedIndex") != -1) {
            $('#default_message_overlay').hide();
        }
    });
});

데모 용 jsfiddle을 만들었습니다 . Firefox 및 IE8에서 테스트되었습니다.


OSX의 Chrome은 항상 선택한 첫 번째 옵션을 표시하지만 여기에 제공된 모든 솔루션이 첫 번째로 표시되는 옵션이 선택되도록하기 때문에 OSX에 특정한 것으로 보입니다.
Gamadril

대신 span이 사용 legend하고는 완벽하거나 것label
karlcow

이것은 흥미로운 접근 방식이며이 동작이 Safari에서 작동하도록 할 수있는 유일한 방법이지만 여기에서는 잘못 구현되었습니다. pointer-events: none클릭이 선택을 통과 할 수 있도록 최소한 스팬이 필요 합니다.
Mark Amery

0
<option value="" id="ddl" name="prop" style="display:none;" disabled selected>chose something </option>

물론 원한다면 css를 css 파일로 옮기고 esc, 비활성화 된 것을 다시 선택하는 버튼을 잡는 스크립트를 넣을 수 있습니다. 내가 넣은 다른 유사한 답변과는 달리 value=""선택 목록의 값을 양식과 함께 보내면 "선택 항목"이 포함되지 않습니다. asp.net MVC에서 5 컴파일 JSON으로 전송 var obj = { prop:$('#ddl').val(),...};JSON.stringify(obj);소품의 값은 널이어야한다.


0

Op1 :

$("#MySelectid option").each(function () {
        if ($(this).html() == "text to find") {
            $(this).attr("selected", "selected");
            return;
        }
});

Op2 :

$('#MySelectid option')
.filter(function() { return $.trim( $(this).text() ) == 'text to find'; })​​​​​​​​.attr('selected','selected');​​​​​​​
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.