Segnaposto elenco a discesa di selezione Bootstrap


104

Sto cercando di creare un elenco a discesa che contenga un segnaposto. Non sembra supportare placeholder="stuff"come fanno altre forme. C'è un modo diverso per ottenere un segnaposto nel mio menu a discesa?

Risposte:


226

Sì, solo "selezionato disabilitato" nell'opzione.

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

Collegamento al violino

Puoi anche visualizzare la risposta su

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


4
Questo non risponde alla domanda in quanto sta chiedendo una soluzione integrata di bootstrap
Mehdi

5
Inoltre è possibile utilizzare disabled selected hiddeno solo hiddentutti sono corretti. :)
MD Ashik

60

Usa nascosto:

<select>
    <option hidden >Display but don't show in list</option>
    <option> text 1 </option>
    <option> text 2 </option>
    <option> text 3 </option>
</select>

continuare con l'ultimo commento, quando si utilizza v-model, è necessario utilizzare questo: <option: value = "null" disabled hidden> Seleziona età </option>
Homer

16

il menu a discesa o la selezione non ha un segnaposto perché HTML non lo supporta ma è possibile creare lo stesso effetto in modo che abbia lo stesso segnaposto degli altri input

    $('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>

se vuoi vedere la prima opzione nell'elenco, rimuovi la proprietà di visualizzazione dal css


8
Hai scritto un sacco di codice personalizzato quando l'aggiunta della classe "disabilitata selezionata" è la stessa cosa.
Giordania JD

2
A suo merito, il suo è un po 'più visivamente completo (con più codice), in cui il segnaposto non viene visualizzato all'interno della selezione dell'elenco. Anche se sto andando per il modo di codice minimo delle cose.
Roadkillnz

8

Se stai inizializzando il campo di selezione tramite javascript, è possibile aggiungere quanto segue per sostituire il testo segnaposto predefinito

noneSelectedText: 'Insert Placeholder text'

esempio: se hai:

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

nel tuo javascript, inizializzi il selectpicker in questo modo

$('.picker').selectpicker({noneSelectedText: 'Insert Placeholder text'});  

6

La maggior parte delle opzioni è problematica per la selezione multipla. Posiziona l'attributo Titolo e imposta come prima opzione data-hidden = "true"

<select class="selectpicker" title="Some placeholder text...">
    <option data-hidden="true"></option>
    <option>First</option>
    <option>Second</option>
</select>

5

Aggiungi attributo nascosto:

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

In che modo questo è diverso dalla risposta di Jay Lin e dalla risposta di Brakke ?
Athafoud

1
Questo ha funzionato al meglio per me, perché il significato selezionato è selezionato per impostazione predefinita, disabilitato in modo che non possa essere cliccato e nascosto dal menu a discesa. Suppongo che se viene utilizzato nascosto, probabilmente non è necessario che disabilitato sia lì.
aspergillusOryzae

4

Prova questo:

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

quando si usa required+, l' value=""utente non può selezionarlo usando hiddenlo renderà nascosto dall'elenco delle opzioni, quando l'utente apre la casella delle opzioni


altamente raccomandato!
Aqua 4,


2

Tutte queste opzioni sono ... improvvisazioni. Bootstrap offre già una soluzione per questo. Se desideri modificare il segnaposto per tutti gli elementi del menu a discesa, puoi modificare il valore di

noneSelectedText nel file bootstrap.

Per cambiare individualmente, puoi usare il parametro TITLE.

esempio:

<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>

Mi hai appena salvato, signore. Tutte le opzioni precedenti non funzionavano per la selezione multipla. Poiché la selezione non stava deselezionando i valori precedenti. Il titolo ha funzionato per me
Faran Khan il

1
  1. in bootstrap-select.jsTrova title: null, e rimuovilo.
  2. aggiungi title="YOUR TEXT"a <select>elemento.
  3. Bene :)

Esempio:

<select title="Please Choose one item">
    <option value="">A</option>
    <option value="">B</option>
    <option value="">C</option>
</select>

1

Penso che la casella a discesa con una classe e un codice JQuery per disabilitare la prima opzione che l'utente può selezionare, funzionerà perfettamente come segnaposto della casella di selezione .

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

Rendi la prima opzione disabilitata da JQuery.

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

Ciò renderà la prima opzione di Dropdown come segnaposto e l'utente non sarà più in grado di selezionare la prima opzione.

Spero che sia d'aiuto!!


0

Ecco un altro modo per farlo

<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>

"Scegli piattaforma" diventa il segnaposto e la proprietà "obbligatoria" garantisce che l'utente debba selezionare una delle opzioni.

Molto utile, quando non si desidera utilizzare nomi di campo o etichette.


0

Usando Bootstrap, questo è quello che puoi fare. Utilizzando la classe "text-hide", l'opzione disabilitata verrà mostrata all'inizio ma non nell'elenco.

<select class="form-control" >
  <option selected disabled class="text-hide">Title</option>
  <option>A</option>
  <option>B</option>
  <option>C</option>
</select>

0

Bootstrap select ha noneSelectedTextun'opzione. Puoi impostarlo tramite data-none-selected-textattributo. Documentazione .


0

Per .htmlpagina

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

per .jspo qualsiasi altra pagina servlet.

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

0

Usando bootstrap, se hai bisogno di aggiungere anche alcuni valori all'opzione da usare per filtri o altre cose puoi semplicemente aggiungere la classe "bs-title-option" all'opzione che vuoi come segnaposto:

<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 aggiunge questa classe titleall'attributo.


0

Soluzione per Angular 2

Crea un'etichetta sopra la selezione

<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>

e applica CSS per posizionarlo sopra

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

pointer-events: none consente di visualizzare la selezione quando si fa clic sull'etichetta, che è nascosta quando si seleziona un'opzione.


0
<option value="" defaultValue disabled> Something </option>

puoi sostituire defaultValuecon selectedma questo darebbe un avvertimento.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.