Bootstrap 表单上传文件布局

Posted

技术标签:

【中文标题】Bootstrap 表单上传文件布局【英文标题】:Bootstrap form upload file layout 【发布时间】:2015-11-13 17:16:51 【问题描述】:

我正在使用 Bootstrap 3 为我的 MVC Web 应用程序创建一个表单。我在正确对齐文件输入字段时遇到了一些问题。我使用this 资源来创建它们。

我的表单目前看起来像this。

我想将显示文件名的文本字段与我的其他字段对齐。代码是这样的:

<form>
<fieldset>
...

        <div class="form-group">
            <label for="inputDeliveryDate" class="col-lg-2 control-label">Delivery date</label>
            <div class="col-lg-10">
                <input type="date" class="form-control" id="inputDeliveryDate">
            </div>
        </div>

        <div class="form-group">
            <label class="col-lg-2 control-label">Attachment</label>
                <div class="col-lg-10">
                    <div class="input-group">
                        <span class="input-group-btn">
                            <span class=" btn btn-info btn-file">
                                Browse<input type="file" name="data" id="data">
                            </span>
                        </span>
                        <input type="text" id="uploadFile" class="form-control small" readonly />
                    </div>
                </div>
            </div>

        <div class="form-group">
            <label for="inputComment" class="col-lg-2 control-label">Comment</label>
            <div class="col-lg-10">
                <textarea class="form-control" rows="5" id="inputComment"></textarea>
            </div>
        </div>
        <div class="form-group">
            <div class="col-lg-10 col-lg-offset-2">
                <button type="submit" class="btn btn-success">Submit</button>
            </div>
        </div>
</fieldset>
</form>

我尝试将输入字段包装在 col-xs-4 div 中,但这似乎不起作用。

【问题讨论】:

您需要发布所有代码 (html/CSS/JS)。 【参考方案1】:

FileUpload 是很难更改的 HTML 元素,特别是如果您使用 CSS 框架。有一些解决方案可以更改此元素的样式,例如您在问题或http://www.quirksmode.org/dom/inputfile.html 中提到的主要基于 CSS 的解决方案。

我的解决方案涉及一些 javascript / jquery 编程;它以前对我有用,我希望它对你有用。

在这个解决方案中,我们制作了一个由按钮和输入文本框组成的假 FileUpload 元素。它还有一个未在表单中显示的真实 FileUpload 元素。然后在 javascript 代码中我们处理假元素的点击事件并将其发送给真实的 FileUpload 元素。

在解决方案中,我们可以随意设计假元素;例如,将浏览按钮放在右侧。

    $('#exampleFakeBrowseFile1, #exampleFakeFile1').on('click', function() 
      $('#exampleFile1').trigger("click");
    );
    $('#exampleFile1').change(function() 
      var file_name = this.value.replace(/\\/g, '/').replace(/.*\//, '');
      $('#exampleFakeFile1').val(file_name);
    );
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css" rel="stylesheet" />
<div class="container">
  <form>
    <div class="form-group">
      <label for="exampleFakeFile1">File</label>

      <div class="input-group">
        <input type="file" id="exampleFile1" name="exampleFile1" style="display: none">
        <input type="text" class="form-control" id="exampleFakeFile1" readonly>
        <span class="input-group-btn">
                    <button class="btn btn-default" type="button" id="exampleFakeBrowseFile1">Browse...</button>
                </span>
      </div>
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
  </form>
</div>

【讨论】:

以上是关于Bootstrap 表单上传文件布局的主要内容,如果未能解决你的问题,请参考以下文章

使用 Twitter Bootstrap、C#、asp.net 和 javascript 上传文件

jQuery实用美化input 上传组建

上传含有文件的form表单(使用formdata)

form表单提交,上传文件以及提交前验证的问题。

在 Rails 3 中使用 Bootstrap 为 simple_form_for 设置样式文件上传按钮

android的自带的httpClient 怎么上传文件