Подтвердить что ты не робот

Выровнять метки и читать только текст в Twitter Bootstrap 2.0

У меня есть форма со смесью редактируемых и доступных только для чтения полей, которые я хочу использовать с помощью Bootstrap. Редактируемые поля выравниваются правильно, но поля только для чтения не являются, как показано на этом скриншоте:

readonly field

Используемый HTML-код:

<form class="form-horizontal">
<div class="control-group">
  <label class="control-label">Name</label>
  <div class="controls">
    John Smith
  </div>
</div>
<div class="control-group">
  <label class="control-label" for="date_of_birth">Date of Birth</label>
  <div class="controls">
    <input name="date_of_birth" id="date_of_birth" size="16" type="text" value="" />
    <span class="help-inline">dd/mm/yyyy</span>
  </div>
</div>
</form>

Я не хочу показывать входные данные только для чтения для полей, которые нельзя редактировать, поскольку пользователи путаются/расстраиваются, когда они не могут щелкнуть в поле, и это поля, которые никогда нельзя редактировать поэтому на самом деле не имеет смысла показывать их как отключенные/только для чтения. Я просто хочу, чтобы текст отображался и правильно выравнивался с меткой. Есть ли способ, которым я могу это сделать, либо используя что-то в Bootstrap, либо переопределяя стили по умолчанию?

Мой вопрос похож на этот, на который не ответил (по крайней мере, не ответ на исходный вопрос), и поскольку у Bootstrap было несколько выпусков в за последние 7 месяцев я подумал, что стоит снова попросить, если что-то изменится.

4b9b3361

Ответ 1

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

.controls.readonly
{
  padding-top: 5px;
}

<div class="control-group">
  <label class="control-label">Name</label>
  <div class="controls readonly">
    John Smith
  </div>
</div>

Bootstrap не распространяется на каждую возможность, и вам нужно будет создавать свои собственные стили.

Ответ 2

Начиная с bootstrap 3.0 был добавлен класс для обработки этого

Если вам нужно разместить обычный статический текст рядом с меткой формы в горизонтальной форме используйте класс .form-control-static на <p>

<div class="controls">
  <p class="form-control-static">Lorem Ipsum and then some</p>
</div>

Ответ 3

Как и @pwaring, мне понадобилось больше стилей:

.controls.readonly{
 font-size: 14px;
 line-height: 20px;
 padding-top: 5px;
}

<div class="controls readonly">
    Lorem Ipsum and then some
  </div>

Ответ 4

Чтобы добавить к сообщению Саймона, я добавил display: inline-block; в CSS.

Это соответствует отображению метки и текста.

Ответ 5

Если вы используете Bootstrap 3, определенно используйте класс form-control-static. Если это не вариант, вы можете использовать класс control-label и иметь другой класс, который удаляет жирный шрифт.

в вашем html:

<div class="control-group">
  <label class="control-label">Name</label>
  <label class="control-label static-text">
    John Smith
  </label>
</div>

в вашем css:

.static-text {
    font-weight: normal;
}

Просто убедитесь, что вы перечислили класс static-text после control-label в атрибуте class в вашем html. Это значит, что он переопределит font-weight, установленный control-label.

В вашем случае вы также можете настроить размер шрифта.

Конечно, если bootstrap когда-либо изменяет свойства CSS в классе control-label, вам, возможно, придется вернуться и настроить класс static-text.

Ответ 6

Это использование ответа chris vdp и предоставление полного HTML-кода для людей, которые не нашли криса, который ответил ослепительно очевидным (например, я и Эдуардо в Норвегии).

Я потенциально показываю больше кода, чем нужно, но я обнаружил, что вышеупомянутые решения не были на уровне "copy-paste", который мне нужен большую часть времени.:-) Я хотел предоставить вам то, что я знаю, работает и могу, вставляя в ваш код ослепительно очевидным образом. Просто разместите эту структуру в любом месте вашего HTML.

Примечание. Это работает и требует Bootstrap 3.

<form class="form-horizontal" role="form">
    <div class="control-group">
        <label for="personName" class="control-label col-sm-2">Name</label>
        <div class="controls col-sm-10">
            <p id="personName" class="form-control-static">John Smith</p>
        </div>
    </div>
    <div class="control-group">
        <label class="control-label col-sm-2" for="date_of_birth">Date of Birth</label>
        <div class="controls">
            <input class="col-sm-3" name="date_of_birth" id="date_of_birth" size="16" type="text" value="" />
            <span class="help-inline col-sm-3">dd/mm/yyyy</span>
        </div>
    </div>
</form>

Ответ 7

Вы можете расширить класс controls:

<style>
.controls.aligncorrect{
  padding-top: 5px;
}
</style>

а затем используя его следующим образом:

<div class="controls aligncorrect" style="padding-top:5px;">
    John Smith
  </div>