【问题标题】:Form inline inside a form horizontal in twitter bootstrap?在 twitter bootstrap 的水平表单中内联表单?
【发布时间】:2012-08-25 11:22:46
【问题描述】:

在没有任何自制类的 twitter bootstrap 中设计一个看起来像这样的表单(请参阅下面的链接)的最佳方法是什么?

是否可以像下面的示例一样在表单水平内设置内部表单内联:

【问题讨论】:

    标签: html forms twitter-bootstrap


    【解决方案1】:

    为简单起见,只需在输入前添加class="form-inline"

    示例:

    <div class="col-md-4 form-inline"> //add the class here...
         <label>Lot Size:</label>
         <input type="text" value="" name="" class="form-control" >
     </div>
    

    【讨论】:

      【解决方案2】:

      由于 bootstrap 4 将 div class="form-row" 与 div class="form-group col-X" 结合使用。 X 是您需要的宽度。你会得到很好的内联列。见fiddle

      <form class="form-horizontal" name="FORMNAME" method="post" action="ACTION" enctype="multipart/form-data">
          <div class="form-group">
              <label class="control-label col-sm-2" for="naam">Naam:&nbsp;*</label>
              <div class="col-sm-10">
                  <input type="text" require class="form-control" id="naam" name="Naam" placeholder="Uw naam" value="{--NAAM--}" >
                  <div id="naamx" class="form-error form-hidden">Wat is uw naam?</div>
              </div>
          </div>
      
          <div class="form-row">
      
              <div class="form-group col-5">
                  <label class="control-label col-sm-4" for="telefoon">Telefoon:&nbsp;*</label>
                  <div class="col-sm-12">
                      <input type="tel" require class="form-control" id="telefoon" name="Telefoon" placeholder="Telefoon nummer" value="{--TELEFOON--}" >
                      <div id="telefoonx" class="form-error form-hidden">Wat is uw telefoonnummer?</div>
                  </div>
              </div>
      
              <div class="form-group col-5">
                  <label class="control-label col-sm-4" for="email">E-mail: </label>
                  <div class="col-sm-12">
                      <input type="email" require class="form-control" id="email" name="E-mail" placeholder="E-mail adres" value="{--E-MAIL--}" >
                      <div id="emailx" class="form-error form-hidden">Wat is uw e-mail adres?</div>
                          </div>
                      </div>
      
              </div>
      
          <div class="form-group">
              <label class="control-label col-sm-2" for="titel">Titel:&nbsp;*</label>
              <div class="col-sm-10">
                  <input type="text" require class="form-control" id="titel" name="Titel" placeholder="Titel van uw vraag of aanbod" value="{--TITEL--}" >
                  <div id="titelx" class="form-error form-hidden">Wat is de titel van uw vraag of aanbod?</div>
              </div>
          </div>
      <from>
      

      【讨论】:

        【解决方案3】:

        我知道这是一个旧答案,但这是我通常做的:

        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>
        

        【讨论】:

          【解决方案4】:

          不要嵌套&lt;form&gt; 标签,那是行不通的。只需使用 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上测试它

          引导程序 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 内的适当样式。
          你可以在thisjsfiddle 上测试一下

          【讨论】:

          • 您还可以在 div 上添加表单类,在我的例子中,我在 span6 div 上使用垂直表单类,在 span12 div 上使用水平表单类
          • 这适用于 bootstrap2。对于引导程序 3,请访问:stackoverflow.com/questions/18429121/…
          • 在引导程序 3 中,如果输入下方有间隙,请删除“form-group”。它会在您使用的每个 div 的底部添加一个 15px 的间隙。
          • 您不需要在 Key+Value 示例中将表单组与行混合。 @rap-2-h:你可以复制粘贴示例代码并点击运行。
          • 这行得通,但我能够在当前版本的 Bootstrap 3 中简化它......似乎这个解决方案的关键只是将任何输入控件放在 div 中,否则 col-xx 网格布局不起作用。没有必要嵌套表单组,父 col-xx-# 可以共享相同的 div,并且不需要“行”类,因为父表单已经是表单水平 (100%)。
          【解决方案5】:

          这使用带有一个 css 类的 twitter bootstrap 3.x 来获取位于输入之上的标签。这是fiddle link,请确保将结果面板展开到足够宽以查看效果。

          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 */
          }
          

          【讨论】:

            【解决方案6】:

            对于上面的 bootstrap 3 示例有效,但过于复杂,而不是使用 form-group 对要内联的字段使用 form-inline。

            例如:

            <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>
            

            【讨论】:

            • 它可能对你不起作用,因为表单控制类设置了“显示:块”。如果您将其覆盖为“显示:内联块”,它应该可以工作。
            • 这不起作用。尝试做问题所要求的,这对于内联表单是不可能的。
            • 唯一的问题是子区域没有扩展到全宽,任何使用网格大小的尝试都将相对于所需的最小内容宽度被挤压。没有这么多 div 的另一种解决方案更好(请参阅我的评论)。
            • 您必须将所有表单组包装在表单内联类中
            • jsfiddle.net/9637fywb 这似乎不符合预期——使用当前最新的引导 CDN (3.3.5)。此示例也没有考虑“内联”部分中的两个标签。也许小提琴缺少某种包装,但如果是这样,似乎应该将其包含在答案中。
            猜你喜欢
            • 2012-08-21
            • 2023-03-03
            • 2012-09-10
            • 2013-08-28
            • 1970-01-01
            • 2013-03-23
            • 1970-01-01
            • 2013-11-26
            • 1970-01-01
            相关资源
            最近更新 更多