58 votes

Twitter Bootstrap : entrée en ligne avec liste déroulante

J'essaie d'afficher une entrée de texte en ligne avec un bouton déroulant. Mais je n'arrive pas à trouver comment faire. Voici le code HTML que j'ai essayé (j'ai tout mis sur une seule ligne, sans résultat) :

<div class="input-append">
  <input type="text" placeholder="foo" class="input-mini">
  <div class="btn-group">
    <a id="amount_type" class="btn dropdown-toggle" data-toggle="dropdown" href="#">10<span class="caret"></span></a>
    <ul id="amount_type_options" class="dropdown-menu">
      <li class="selected"><a href="#">10</a></li>
      <li><a href="#">100</a></li>
      <li><a href="#">1000</a></li>
    </ul>
  </div>
</div>

Est-ce possible ?

Merci.

2 votes

Essayez le plugin Bootstrap Combobox : formvalidation.io/examples/bootstrap-combobox

64voto

Tadeck Points 37046

Etat actuel : implémentation par défaut dans la documentation

Il existe actuellement une implémentation par défaut du combo input+dropdown dans la documentation. aquí (recherchez "Boutons déroulants"). Je laisse la solution originale pour mémoire et pour ceux qui ne peuvent pas utiliser la solution maintenant incluse dans la documentation.

Solution originale

Oui, c'est possible. D'ailleurs, il y a un exemple dans la documentation sur Twitter Bootstrap (suivez le lien et cherchez " Exemples " pour les boutons déroulants) :

<div class="btn-group">
    <a class="btn btn-primary" href="#">
        <i class="icon-user icon-white"></i> User
    </a>
    <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
        <span class="caret"></span>
    </a>
    <ul class="dropdown-menu">
        <li><a href="#"><i class="icon-pencil"></i> Edit</a></li>
        <li><a href="#"><i class="icon-trash"></i> Delete</a></li>
        <li><a href="#"><i class="icon-ban-circle"></i> Ban</a></li>
        <li class="divider"></li>
        <li><a href="#"><i class="i"></i> Make admin</a></li>
    </ul>
</div>

S'il est inclus dans du texte, il peut ressembler à ceci (avec le texte du bouton modifié, rien d'autre) :

Twitter Bootstrap dropdown button within text

EDIT :

Si vous essayez d'atteindre <input> avec un menu déroulant annexé comme dans les boutons déroulants, c'est l'une des solutions :

  1. Ajouter un btn-group à l'élément qui a input-append classe,
  2. Ajouter des éléments avec des classes dropdown-toggle y dropdown-menu à la fin de l'élément avec la classe input-append ,
  3. Remplacer le style pour la correspondance des éléments .input-append .btn.dropdown-menu donc il n'a pas float: left (sinon, il passera à la ligne suivante).

Le code résultant peut ressembler à ceci :

<div class="input-append btn-group">
    <input class="span2" id="appendedInputButton" size="16" type="text">
    <a class="btn btn-primary dropdown-toggle" data-toggle="dropdown" href="#">
        <span class="caret"></span>
    </a>
    <ul class="dropdown-menu">
        <li><a href="#"><i class="icon-pencil"></i> Edit</a></li>
        <li><a href="#"><i class="icon-trash"></i> Delete</a></li>
        <li><a href="#"><i class="icon-ban-circle"></i> Ban</a></li>
        <li class="divider"></li>
        <li><a href="#"><i class="i"></i> Make admin</a></li>
    </ul>
</div>

avec un peu d'aide de cette modification de style :

.input-append .btn.dropdown-toggle {
    float: none;
}

et vous donner le même résultat que celui-ci :

enter image description here

EDIT 2 : Mise à jour du sélecteur CSS (qui était .dropdown-menu c'est .dropdown-toggle ).

1 votes

Désolé, je cherche en fait un champ de saisie avec un bouton de sélection ajouté à la fin. Si vous regardez la section Formulaires du lien que vous avez fourni et que vous consultez l'exemple "Ajouter un bouton", vous verrez ce que je veux dire. Sauf que dans cet exemple, il s'agit d'un bouton ordinaire et que j'essaie de trouver comment utiliser une liste déroulante à la place.

0 votes

@MishaM : Il semble que vous essayez de créer votre propre implémentation de la liste déroulante. Puis-je vous demander pourquoi ? Cela signifie généralement que vous devriez utiliser une simple liste déroulante, probablement avec un peu de style. Avez-vous besoin de quelque chose de différent de la liste déroulante ( <select><option>option A</option><option>option B</option></select> )?

0 votes

La liste déroulante est un qualificatif pour l'entrée. L'entrée contient le montant et la liste déroulante contient les unités. Je peux les implémenter séparément, mais j'essaie de présenter une meilleure expérience à l'utilisateur.

13voto

Clint Harris Points 7163

À partir de Bootstrap 3.x, il y a un exemple de ceci dans les documents ici : http://getbootstrap.com/components/#input-groups-buttons-dropdowns

<div class="input-group">
  <input type="text" class="form-control" aria-label="...">
  <div class="input-group-btn">
    <button type="button" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-expanded="false">Action <span class="caret"></span></button>
    <ul class="dropdown-menu dropdown-menu-right" role="menu">
      <li><a href="#">Action</a></li>
      <li><a href="#">Another action</a></li>
      <li><a href="#">Something else here</a></li>
      <li class="divider"></li>
      <li><a href="#">Separated link</a></li>
    </ul>
  </div><!-- /btn-group -->
</div><!-- /input-group -->

10voto

Recherchez le tag "datalist".

<input list="texto_pronto" name="input_normal">
<datalist id="texto_pronto">
    <option value="texto A">
    <option value="texto B">
</datalist>

4voto

ashish bhatt Points 193

Il s'agit du code pour Bootstrap avec la recherche d'entrée dropdown. J'ai beaucoup cherché puis j'ai essayé de le faire en javascript et en html avec Bootstrap,

Code HTML :

<div class="form-group">
    <label class="col-xs-3 control-label">Language</label>
    <div class="col-xs-7">
        <div class="dropdown">
          <button id="mydef" class="btn dropdown-toggle" type="button" data-toggle="dropdown" onclick="doOn(this);">
            <div class="col-xs-10">
                <input type="text" id="search" placeholder="search" onkeyup="doOn(this);"></input>
            </div>
            <span class="glyphicon glyphicon-search"></span>
         </button>
      <ul id="def" class="dropdown-menu" style="display:none;" >
            <li><a id="HTML" onclick="mydef(this);" >HTML</a></li>
            <li><a id="CSS" onclick="mydef(this);" >CSS</a></li>
            <li><a id="JavaScript" onclick="mydef(this);" >JavaScript</a></li>
      </ul>
      <ul id="def1" class="dropdown-menu" style="display:none"></ul>
    </div>
</div>

Code Javascript :

function doOn(obj)
     {

        if(obj.id=="mydef")
        {
            document.getElementById("def1").style.display="none";
            document.getElementById("def").style.display="block";
        }
        if(obj.id=="search")
        {
            document.getElementById("def").style.display="none";

            document.getElementById("def1").innerHTML='<li><a id="Java" onclick="mydef(this);" >java</a></li><li><a id="oracle" onclick="mydef(this);" >Oracle</a></li>';

            document.getElementById("def1").style.display="block";
        }

    }
    function mydef(obj)
    {
        document.getElementById("search").value=obj.innerHTML;
        document.getElementById("def1").style.display="none";
        document.getElementById("def").style.display="none";
    }

Vous pouvez également utiliser le code jquery et json selon vos besoins.

Sortie comme : enter image description here

enter image description here

enter image description here

4voto

Hoàng Vũ Tgtt Points 1308

Ma solution est d'utiliser affichage : en ligne

Some text <div class="dropdown" style="display:inline">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">Action</a></li>
    <li><a href="#">Another action</a></li>
    <li><a href="#">Something else here</a></li>
    <li><a href="#">Separated link</a></li>
  </ul>
</div> is here

a

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>

<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap-theme.min.css" rel="stylesheet" />
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />Your text
<div class="dropdown" style="display: inline">
  <button class="btn btn-default dropdown-toggle" type="button" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true">
    Dropdown
    <span class="caret"></span>
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
    <li><a href="#">Action</a>
    </li>
    <li><a href="#">Another action</a>
    </li>
    <li><a href="#">Something else here</a>
    </li>
    <li><a href="#">Separated link</a>
    </li>
  </ul>
</div>is here

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X