Symbol zastępczy listy rozwijanej wyboru Bootstrap

104

Próbuję utworzyć listę rozwijaną zawierającą symbol zastępczy. Wydaje się, że nie działa tak placeholder="stuff"jak inne formy. Czy istnieje inny sposób uzyskania symbolu zastępczego w moim menu rozwijanym?

Jordan.JD
źródło

Odpowiedzi:

227

Tak, tylko „wybrano wyłączone” w opcji.

<select>
    <option value="" selected disabled>Please select</option>
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>

Link do skrzypiec

Możesz również wyświetlić odpowiedź pod adresem

https://stackoverflow.com/a/5859221/1225125

Brakke
źródło
4
To nie odpowiada na pytanie, ponieważ on / ona prosi o wbudowane rozwiązanie bootstrap
Mehdi
5
Możesz również użyć disabled selected hiddenlub tylko hiddenwszystkie są poprawne. :)
MD Ashik
60

Użyj ukrytych:

<select>
    <option hidden >Display but don't show in list</option>
    <option> text 1 </option>
    <option> text 2 </option>
    <option> text 3 </option>
</select>
Jay Lin
źródło
kontynuuj z ostatnim komentarzem, gdy używasz v-model, musi użyć tego: <option: value = "null" disabled hidden> Select Age </option>
Homer
16

lista rozwijana lub wybierz nie ma symbolu zastępczego, ponieważ HTML go nie obsługuje, ale można stworzyć ten sam efekt, aby wyglądał tak samo jak inny symbol zastępczy wejścia

    $('select').change(function() {
     if ($(this).children('option:first-child').is(':selected')) {
       $(this).addClass('placeholder');
     } else {
      $(this).removeClass('placeholder');
     }
    });
.placeholder{color: grey;}
select option:first-child{color: grey; display: none;}
select option{color: #555;} // bootstrap default color
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select class="form-control placeholder">
   <option value="">Your Placeholder Text</option>
   <option value="1">Text 1</option>
   <option value="2">Text 2</option>
   <option value="3">Text 3</option>
</select>

jeśli chcesz zobaczyć pierwszą opcję na liście, usuń właściwość wyświetlania z css

NeoNe
źródło
8
Napisałeś mnóstwo niestandardowego kodu, a dodanie „wybranej wyłączonej” klasy to to samo.
Jordan.JD
2
Trzeba przyznać, że jego jest trochę bardziej wizualnie kompletny (z większą ilością kodu), gdzie element zastępczy nie jest renderowany w wyborze listy. Chociaż wybieram minimalny sposób kodowania.
Roadkillnz,
8

Jeśli inicjujesz pole wyboru za pomocą javascript, możesz dodać następujące elementy, aby zastąpić domyślny tekst zastępczy

noneSelectedText: 'Insert Placeholder text'

przykład: jeśli masz:

<select class='picker'></select>

w swoim javascript inicjalizujesz selektor w ten sposób

$('.picker').selectpicker({noneSelectedText: 'Insert Placeholder text'});  
Chadillac
źródło
6

Większość opcji jest problematyczna w przypadku wielokrotnego wyboru. Umieść atrybut Tytuł i ustaw pierwszą opcję jako data-hidden = "true"

<select class="selectpicker" title="Some placeholder text...">
    <option data-hidden="true"></option>
    <option>First</option>
    <option>Second</option>
</select>
VGranin
źródło
5

Dodaj ukryty atrybut:

<select>
    <option value="" selected disabled hidden>Please select</option>
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>
Mark van Lit
źródło
Jak to jest inna odpowiedź Jay Lin i odpowiedzi Brakke za ?
Athafoud
1
To zadziałało najlepiej dla mnie, ponieważ wybrano, co oznacza, że ​​jest wybrane domyślnie, wyłączone, więc nie można go kliknąć i ukryte w menu. Przypuszczam, że jeśli jest używany ukryty, wyłączony prawdopodobnie nie musi tam być.
aspergillusOryzae
4

Spróbuj tego:

<select class="form-control" required>
<option value="" selected hidden>Select...</option>

podczas używania required+ value=""użytkownik nie może go wybrać używając hiddenspowoduje, że zostanie on ukryty na liście opcji, gdy użytkownik otworzy okno opcji

Bassem Shahin
źródło
wysoce rekomendowane!
Aqua 4
2

Spróbuj @title = "stuff". U mnie to zadziałało.

Gabriel Janson
źródło
3
Przykład pasowałby idealnie
workdreamer
2

Wszystkie te opcje to… improwizacja. Bootstrap już oferuje na to rozwiązanie. Jeśli chcesz zmienić symbol zastępczy dla wszystkich elementów listy rozwijanej, możesz zmienić wartość

noneSelectedText w pliku bootstrap.

Aby zmienić indywidualnie, możesz użyć parametru TITLE.

przykład:

<div class="form-group">
          <label class="control-label col-xs-2" id="country">Continent:</label>
          <div class="col-xs-9">
            <select name="zones[]" class="selectpicker" title="All continents" id="zones" multiple >
              <option value="Africa">Africa</option>
              <option value="Asia">Asia</option>
              <option value="North America">America North</option>
              <option value="South America">America South</option>
              <option value="Antarctica">Antarctica</option>
              <option value="Australia">Australia</option>
              <option value="Europe">Europe</option>
            </select>
          </div>
        </div>
Tudor
źródło
Pan mnie właśnie uratował. Wszystkie powyższe opcje nie działały w przypadku wyboru wielokrotnego. Ponieważ wybór nie był usuwany z poprzednich wartości. Tytuł zadziałał dla mnie
Faran Khan
1
  1. w bootstrap-select.jsZnajdź title: null, i usuń.
  2. dodać title="YOUR TEXT"w <select>elemencie.
  3. W porządku :)

Przykład:

<select title="Please Choose one item">
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>
Amir Hossein Khateri
źródło
1

Myślę, że pole rozwijane z klasą i kodem JQuery, aby wyłączyć pierwszą opcję do wyboru przez użytkownika, będzie działać idealnie jako element zastępczy pola wyboru .

<select class="selectboxclass">
   <option value="">- Please Select -</option>
   <option value="IN">India</option>
   <option value="US">America</option>
</select>

Wyłącz pierwszą opcję przez JQuery.

<script>
$('select.selectboxclass option:first').attr('disabled', true);
</script>

Spowoduje to, że pierwsza opcja listy rozwijanej będzie symbolem zastępczym, a użytkownik nie będzie już mógł wybrać pierwszej opcji.

Mam nadzieję, że to pomoże!!

Mahesh Yadav
źródło
0

Oto inny sposób, aby to zrobić

<select name="GROUPINGS[xxxxxx]" style="width: 60%;" required>
    <option value="">Choose Platform</option>
<option value="iOS">iOS</option>
    <option value="Android">Android</option>
    <option value="Windows">Windows</option>
</select>

„Wybierz platformę” staje się symbolem zastępczym, a właściwość „wymagana” zapewnia, że ​​użytkownik musi wybrać jedną z opcji.

Bardzo przydatne, gdy nie chcesz używać nazw pól ani etykiet.

Sandeep
źródło
0

Używając Bootstrap, oto co możesz zrobić. Używając klasy "ukrywanie tekstu", wyłączona opcja będzie wyświetlana jako pierwsza, ale nie będzie na liście.

<select class="form-control" >
  <option selected disabled class="text-hide">Title</option>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>
Srijay
źródło
0

Wybór Bootstrap ma noneSelectedTextopcję. Możesz to ustawić za pomocą data-none-selected-textatrybutu. Dokumentacja .

Oleg
źródło
0

Na .htmlstronie

<select>
    <option value="" selected disabled>Please select</option>
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>

dla .jsplub dowolnej innej strony serwletu.

<select>
    <option value="" selected="true" disabled="true">Please select</option>
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>
tk_
źródło
0

Używając bootstrap, jeśli chcesz również dodać jakieś wartości do opcji używanej dla filtrów lub innych rzeczy, możesz po prostu dodać klasę "bs-title-option" do opcji, którą chcesz jako symbol zastępczy:

<select class="form-group">
   <option class="bs-title-option" value="myVal">My PlaceHolder</option>
   <option>A</option>
   <option>B</option>
   <option>c</option>
</select>

Bootstrap dodaje tę klasę do titleatrybutu.

Lorenzo Benedetto
źródło
0

Rozwiązanie dla Angular 2

Utwórz etykietę na górze zaznaczenia

<label class="hidden-label" for="IsActive"
    *ngIf="filterIsActive == undefined">Placeholder text</label>
<select class="form-control form-control-sm" type="text" name="filterIsActive"
    [(ngModel)]="filterIsActive" id="IsActive">
    <option value="true">true</option>
    <option value="false">false</option>
</select>

i zastosuj CSS, aby umieścić go na górze

.hidden-label {
    position: absolute;
    margin-top: .34rem;
    margin-left: .56rem;
    font-style: italic;
    pointer-events: none;
}

pointer-events: none umożliwia wyświetlenie zaznaczenia po kliknięciu etykiety, która jest ukryta po wybraniu opcji.

edu
źródło
0
<option value="" defaultValue disabled> Something </option>

można zastąpić defaultValuez selectedale to by dać ostrzeżenie.

Mayank Pathela
źródło