html - 显示帮助文本时 Bootstrap 表单布局中断

标签 html css twitter-bootstrap-3

使用 Bootstrap 3 表单。在正常的 Bootstrap 表单中,字段标签位于输入字段的顶部(没有 form-inline,没有 form-horizo​​ntal),我希望能够显示灵活数量的控件在同一行。例如:

  • 全宽屏幕上有 4 个控件
  • 中等尺寸屏幕上有 2 个控件
  • 小屏幕上的 1 个控件

为了实现这一点,我们可以使用 Bootstrap row 对所有四个控件进行分组,并为每个控件分配适当的 col-xx-x 类。请参阅下面的代码。

此布局的问题在于,当控件以堆叠方式显示(多于一行)并且用于显示控件中错误的 help-block 时,将显示控件布局的正下方帮助文本向右推一位。其原因是这些控件共享同一行,并且帮助消息添加的额外高度填充了下一行中的一个空格。请参阅提供的示例。

<html>

<head>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />
</head>

<body>
  <div class="container">
    <form>
      <div class="row">
        <div class="form-group col-xs-6 col-md-4 col-lg-3">
          <label for="exampleInputEmail1">Email address</label>
          <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
          <span id="errorMessage" class="help-block" style="display: none">This is the error message</span>
        </div>
        <div class="form-group col-xs-6 col-md-4 col-lg-3">
          <label for="exampleInputPassword1">Password</label>
          <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
        </div>
        <div class="form-group col-xs-6 col-md-4 col-lg-3">
          <label for="other">Other</label>
          <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Other">
        </div>
      </div>
    </form>
    <button class="btn btn-default" onclick="function showError() {document.getElementById('errorMessage').style.display = 'inline'};showError();">
    Show error message in email control
  </button>
  </div>
</body>

</html>

我尝试过 form-inline 表单,但帮助文本显示在控件的右侧而不是下面。

最佳答案

我希望这就是您正在寻找的...

.no-padding {
  padding-left: 0 !important;
  padding-right: 0 !important;
}

.no-right-margin {
  margin-right: 0 !important;
}
<html>

<head>
  <link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.1/css/bootstrap.min.css" rel="stylesheet" />
</head>

<body>
  <div class="container">
    <form>
      <div class="row">
        <div class="form-group col-xs-6 col-md-4 col-lg-3">
          <label for="exampleInputEmail1">Email address</label>
          <input type="email" class="form-control" id="exampleInputEmail1" placeholder="Email">
          <span id="errorMessage" class="help-text" style="display: none">This is the error message</span>
        </div>
        <div class="form-group col-xs-6 col-md-4 col-lg-3">
          <label for="exampleInputPassword1">Password</label>
          <input type="password" class="form-control" id="exampleInputPassword1" placeholder="Password">
        </div>
      </div>
      <div class="col-xs-6 col-md-4 col-lg-3 no-padding">
        <div class="row no-right-margin">
          <div class="form-group col-xs-12 col-md-12 col-lg-12">
            <label for="other">Other</label>
            <input type="text" class="form-control" id="exampleInputPassword1" placeholder="Other">
          </div>
        </div>
      </div>
    </form>
    <button class="btn btn-default" onclick="function showError() {document.getElementById('errorMessage').style.display = 'inline'};showError();">
    Show error message in email control
  </button>
  </div>
</body>

</html>

关于html - 显示帮助文本时 Bootstrap 表单布局中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52643535/

相关文章:

javascript - X-editable $(...).editable 不是函数

html - 列未连接? Bootstrap

html - 如何在 twitter bootstrap3 的导航栏中增加搜索栏的宽度

css - 代码点火器 + CSS

html - col-push 和 col-pull Bootstrap - 它是如何工作的?

python - 错误属性 %s 不是多行的

html - 下一个/同级/后续 HTML 元素的 XPath?

jquery - 仅在视口(viewport)中初始化 RoyalSlider

html - 使用纯 CSS 内联 <div> 列元素

jquery - 如何设计基于 jQuery 的分页