Загрузочный полнотекстовый ввод текста внутри встроенной формы

Я пытаюсь создать текстовое поле, которое соответствует всей ширине моей области контейнера.

<div class="row">
    <div class="col-md-12">
        <form class="form-inline" role="form">           
                <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
                <button type="submit" class="btn btn-lg">Search</button>            
        </form>
    </div>
</div>

Когда я делаю это, два элемента формы находятся в строке, как я ожидаю, но в лучшем случае не занимают больше нескольких столбцов. Наведение курсора на col-md-12 div в firebug показывает, что он занимает ожидаемую полную ширину. Это просто ввод текста, который, похоже, не заполняется. Я даже попытался добавить значение ширины строки, но ничего не изменил. Я знаю, что это должно быть просто, просто чувствуя себя действительно немым сейчас.

Вот скрипка: http://jsfiddle.net/52VtD/4119/embedded/result/

EDIT:

Выбранный ответ является основательным во всех отношениях и замечательной помощью. Это то, что я использовал. Однако я думаю, что моя первоначальная проблема была фактически проблемой с шаблоном MVC5 по умолчанию в Visual Studio 2013. Он содержал это в Site.css:

input,
select,
textarea {
    max-width: 280px;
}

Очевидно, что это блокирование текстового ввода от правильного расширения... Яркое предупреждение для будущих пользователей шаблона ASP.NET...

Ответ 1

В документации по начальной загрузке говорится об этом:

Требуется настраиваемая ширина. Входы, выделения и текстовые области на 100% по умолчанию в Bootstrap. Чтобы использовать встроенную форму, вам нужно установить ширина элементов управления формы, используемых внутри.

Ширина по умолчанию 100%, поскольку все элементы формы получают, когда они получили класс form-control, не применяются, если вы используете класс form-inline в своей форме.

Вы можете взглянуть на bootstrap.css (или .less, как вам нравится), где вы найдете эту часть:

.form-inline {

  // Kick in the inline
  @media (min-width: @screen-sm-min) {
    // Inline-block all the things for "inline"
    .form-group {
      display: inline-block;
      margin-bottom: 0;
      vertical-align: middle;
    }

    // In navbar-form, allow folks to *not* use '.form-group'
    .form-control {
      display: inline-block;
      width: auto; // Prevent labels from stacking above inputs in '.form-group'
      vertical-align: middle;
    }
    // Input groups need that 100% width though
    .input-group > .form-control {
      width: 100%;
    }

    [...]
  }
}

Может быть, вам стоит взглянуть на группы ввода, поскольку, я думаю, они содержат именно ту разметку, которую вы хотите использовать (рабочая скрипка здесь):

<div class="row">
   <div class="col-lg-12">
    <div class="input-group input-group-lg">
      <input type="text" class="form-control input-lg" id="search-church" placeholder="Your location (City, State, ZIP)">
      <span class="input-group-btn">
        <button class="btn btn-default btn-lg" type="submit">Search</button>
      </span>
    </div>
  </div>
</div>

Ответ 2

взгляните на что-то вроде этого:

<form role="form">  
    <div class="row">
      <div class="col-xs-12">
        <div class="input-group input-group-lg">
            <input type="text" class="form-control" />
          <div class="input-group-btn">
            <button type="submit" class="btn">Search</button>
          </div><!-- /btn-group -->
        </div><!-- /input-group -->
      </div><!-- /.col-xs-12 -->
    </div><!-- /.row -->
</form>

http://jsfiddle.net/n6c7v/1/

Ответ 3

Как указано в аналогичном вопросе, попробуйте удалить экземпляры класса input-group и посмотреть, помогает ли это.

ссылаясь на загрузку:

Индивидуальные формы управления автоматически получают некоторый глобальный стиль. Все текстовые, и элементы с .form-control установлены на ширину: 100%; по умолчанию. Оберните этикетки и управление в .form-группе для оптимального расстояния.

Ответ 4

  Попробуйте что-то вроде ниже, чтобы достичь желаемого результата

input {
    max-width: 100%;
}