Форма встроенная внутри формы горизонтальная в Twitter начальной загрузки?

166

Какой лучший способ создать форму, которая выглядит так (см. ссылку ниже) в twitter bootstrap без каких-либо домашних классов?

Можно ли установить внутреннюю форму внутри строки горизонтально, как показано ниже:

Изображение 112

Теги:
forms

4 ответа

303
Лучший ответ

Не вставляйте теги <form>, которые не будут работать. Просто используйте классы Bootstrap.

Bootstrap 3

<form class="form-horizontal" role="form">
    <div class="form-group">
      <label for="inputType" class="col-md-2 control-label">Type</label>
      <div class="col-md-3">
          <input type="text" class="form-control" id="inputType" placeholder="Type">
      </div>
    </div>
    <div class="form-group">
        <span class="col-md-2 control-label">Metadata</span>
        <div class="col-md-6">
            <div class="form-group row">
                <label for="inputKey" class="col-md-1 control-label">Key</label>
                <div class="col-md-2">
                    <input type="text" class="form-control" id="inputKey" placeholder="Key">
                </div>
                <label for="inputValue" class="col-md-1 control-label">Value</label>
                <div class="col-md-2">
                    <input type="text" class="form-control" id="inputValue" placeholder="Value">
                </div>
            </div>
        </div>
    </div>
</form>

Вы можете добиться такого поведения во многих отношениях, это просто пример. Проверьте это на bootply

Bootstrap 2

<form class="form-horizontal">
    <div class="control-group">
        <label class="control-label" for="inputType">Type</label>
        <div class="controls">
            <input type="text" id="inputType" placeholder="Type">
        </div>
    </div>
    <div class="control-group">
        <span class="control-label">Metadata</span>
        <div class="controls form-inline">
            <label for="inputKey">Key</label>
            <input type="text" class="input-small" placeholder="Key" id="inputKey">
            <label for="inputValue">Value</label>
            <input type="password" class="input-small" placeholder="Value" id="inputValue">
        </div>
    </div>
</form>

Обратите внимание, что я использую .form-inline, чтобы получить стиль приставки внутри .controls.
Вы можете проверить его на this jsfiddle

  • 3
    Вы также можете добавить классы формы в div, в моем случае я использовал класс вертикальной формы в div span6 и класс горизонтальной формы в div span12
  • 3
    Это работает для bootstrap2. Для начальной загрузки 3 посетите: stackoverflow.com/questions/18429121/…
Показать ещё 6 комментариев
79

Для bootstrap 3 пример выше работает, но сложнее, вместо использования формы-формы используйте форму-строку для полей, которые вы хотите встроить.

Например:

<div class="form-group">
     <label>CVV</label>
     <input type="text" size="4" class="form-control" />
</div>

<div class="form-inline">
      <label>Expiration (MM/YYYY)</label><br>
      <input type="text" size="2" class="form-control" /> / <input type="text" size="4" class="form-control" />
</div>
  • 8
    Не работает, как ожидалось ...
  • 0
    Он может не работать для вас из-за класса управления формой, который устанавливает «display: block». Если вы переопределите его на «display: inline-block», оно должно работать.
Показать ещё 8 комментариев
12

Для этого используется twitter bootstrap 3.x с одним классом css, чтобы метки отображались поверх входов. Здесь скрипта ссылка, убедитесь, что панель результатов достаточно широка, чтобы увидеть эффект.

HTML:

  <div class="row myform">
     <div class="col-md-12">
        <form name="myform" role="form" novalidate>
           <div class="form-group">
              <label class="control-label" for="fullName">Address Line</label>
              <input required type="text" name="addr" id="addr" class="form-control" placeholder="Address"/>
           </div>

           <div class="form-inline">
              <div class="form-group">
                 <label>State</label>
                 <input required type="text" name="state" id="state" class="form-control" placeholder="State"/>
              </div>

              <div class="form-group">
                 <label>ZIP</label>
                 <input required type="text" name="zip" id="zip" class="form-control" placeholder="Zip"/>
              </div>
           </div>

           <div class="form-group">
              <label class="control-label" for="country">Country</label>
              <input required type="text" name="country" id="country" class="form-control" placeholder="country"/>
           </div>
        </form>
     </div>
  </div>

CSS

.myform input.form-control {
   display: block;  /* allows labels to sit on input when inline */
   margin-bottom: 15px; /* gives padding to bottom of inline inputs */
}
1

Я знаю, что это старый ответ, но вот что я обычно делаю:

CSS

.form-control-inline {
   width: auto;
   float:left;
   margin-right: 5px;
}

Затем заверните поля, которые хотите быть встроенными в div, и добавьте на вход .form-control-inline, например:

HTML

<label class="control-label">Date of birth:</label>
<div>
<select class="form-control form-control-inline" name="year"> ... </select>
<select class="form-control form-control-inline" name="month"> ... </select>
<select class="form-control form-control-inline" name="day"> ... </select>
</div>

Ещё вопросы

Сообщество Overcoder
Наверх
Меню