Formulaire en ligne dans un formulaire horizontal dans twitter bootstrap?
200
Quelle est la meilleure façon de concevoir un formulaire qui ressemble à ceci (veuillez voir le lien ci-dessous) dans twitter bootstrap sans aucun cours maison?
Est-il possible de définir un formulaire interne en ligne à l'intérieur d'un formulaire horizontal comme dans l'exemple ci-dessous:
Vous pouvez également ajouter les classes de formulaire sur les divs, dans mon cas, j'ai utilisé la classe de formulaire verticale sur un div span6 et une classe de formulaire horizontale sur un div span12
Dans bootstrap 3, s'il y a un espace sous l'entrée, supprimez "form-group". Il ajoute un espace de 15 pixels au bas de chaque div avec lequel vous l'utilisez.
darkzangel
Vous n'avez pas besoin de mélanger le groupe de formulaires avec la ligne dans l'exemple Key + Value. @ rap-2-h: vous pouvez copier coller l'exemple de code et cliquer sur exécuter.
Sebastian
Cela fonctionne mais j'ai pu le simplifier dans la version actuelle de Bootstrap 3 ... Il semble essentiel de cette solution juste pour mettre des contrôles d'entrée à l'intérieur d'un div, sinon la disposition de la grille col-xx ne fonctionne pas. Il n'était pas nécessaire d'imbriquer le groupe de formulaires, le parent col-xx- # peut partager le même div et il n'y a pas besoin de la classe "row" car le formulaire parent est déjà un formulaire horizontal (100%).
Tony Wall
92
Pour l'exemple de bootstrap 3 ci-dessus, cela fonctionne mais est trop compliqué, plutôt que d'utiliser le groupe de formulaires, utilisez le formulaire en ligne pour les champs que vous souhaitez en ligne.
Cela peut ne pas fonctionner pour vous en raison de la classe de contrôle de formulaire qui définit "display: block". Si vous le remplacez par "display: inline-block" cela devrait fonctionner.
Cédric Guillemette
1
Cela ne fonctionne pas. Essayez de faire ce que la question demande, ce n'est pas possible avec form-inline.
Sebastian
Le seul problème est que la sous-zone n'est pas étendue à sa pleine largeur et toute tentative d'utilisation du dimensionnement de la grille sera écrasée par rapport à la largeur de contenu minimale requise. L'autre solution est meilleure juste sans autant de divs (voir mon commentaire là-bas).
Tony Wall
3
Vous devez envelopper tous les groupes de formulaires dans la classe form-inline
ymakux
jsfiddle.net/9637fywb Cela ne semble pas agir comme souhaité - en utilisant le dernier CDN bootstrap actuel (3.3.5). Cet exemple ne prend pas non plus en compte deux étiquettes à l'intérieur de la section "en ligne". Peut-être le violon manque-t-il un emballage quelconque, mais il semble que cela devrait être inclus dans la réponse, si c'est le cas.
emragins
14
Cela utilise twitter bootstrap 3.x avec une classe css pour que les étiquettes se placent au-dessus des entrées. Voici un lien de violon , assurez-vous d'élargir le panneau de résultats assez large pour voir l'effet.
.myform input.form-control {
display: block;/* allows labels to sit on input when inline */
margin-bottom:15px;/* gives padding to bottom of inline inputs */}
Depuis le bootstrap 4, utilisez div class = "form-row" en combinaison avec div class = "form-group col-X". X est la largeur dont vous avez besoin. Vous obtiendrez de belles colonnes en ligne. Voir violon .
<formclass="form-horizontal"name="FORMNAME"method="post"action="ACTION"enctype="multipart/form-data"><divclass="form-group"><labelclass="control-label col-sm-2"for="naam">Naam: *</label><divclass="col-sm-10"><inputtype="text"requireclass="form-control"id="naam"name="Naam"placeholder="Uw naam"value="{--NAAM--}"><divid="naamx"class="form-error form-hidden">Wat is uw naam?</div></div></div><divclass="form-row"><divclass="form-group col-5"><labelclass="control-label col-sm-4"for="telefoon">Telefoon: *</label><divclass="col-sm-12"><inputtype="tel"requireclass="form-control"id="telefoon"name="Telefoon"placeholder="Telefoon nummer"value="{--TELEFOON--}"><divid="telefoonx"class="form-error form-hidden">Wat is uw telefoonnummer?</div></div></div><divclass="form-group col-5"><labelclass="control-label col-sm-4"for="email">E-mail: </label><divclass="col-sm-12"><inputtype="email"requireclass="form-control"id="email"name="E-mail"placeholder="E-mail adres"value="{--E-MAIL--}"><divid="emailx"class="form-error form-hidden">Wat is uw e-mail adres?</div></div></div></div><divclass="form-group"><labelclass="control-label col-sm-2"for="titel">Titel: *</label><divclass="col-sm-10"><inputtype="text"requireclass="form-control"id="titel"name="Titel"placeholder="Titel van uw vraag of aanbod"value="{--TITEL--}"><divid="titelx"class="form-error form-hidden">Wat is de titel van uw vraag of aanbod?</div></div></div><from>
Pour l'exemple de bootstrap 3 ci-dessus, cela fonctionne mais est trop compliqué, plutôt que d'utiliser le groupe de formulaires, utilisez le formulaire en ligne pour les champs que vous souhaitez en ligne.
Par exemple:
la source
Cela utilise twitter bootstrap 3.x avec une classe css pour que les étiquettes se placent au-dessus des entrées. Voici un lien de violon , assurez-vous d'élargir le panneau de résultats assez large pour voir l'effet.
HTML:
CSS:
la source
Depuis le bootstrap 4, utilisez div class = "form-row" en combinaison avec div class = "form-group col-X". X est la largeur dont vous avez besoin. Vous obtiendrez de belles colonnes en ligne. Voir violon .
la source
Je sais que c'est une vieille réponse mais voici ce que je fais habituellement:
CSS:
Enveloppez ensuite les champs que vous souhaitez insérer dans un div et ajoutez .form-control-inline à l'entrée, par exemple:
HTML
la source
pour faire simple, il suffit d'ajouter un
class="form-inline"
avant l'entrée.exemple:
la source