如何自定义Bootstrap 5文件输入文本和按钮位置?

j2datikz  于 2022-12-08  发布在  Bootstrap
关注(0)|答案(1)|浏览(301)

Bootstrap 5的输入类型文件太简单。https://getbootstrap.com/docs/5.1/forms/form-control/#file-input

我有三个问题:
1.是否可以将“选择文件”按钮移至右侧?
1.是否可以更改“未选择文件”消息?
1.是否可能更改“选择文件”消息?
使用Bootstrap 4可以:https://getbootstrap.com/docs/4.6/components/input-group/#custom-file-input
谢谢你,谢谢你

lc8prwob

lc8prwob1#

我没有找到一个解决方案使用原来的 Bootstrap 进入。但是,我用了一些技巧,使它就像我改变了文件输入形式的文本。我将使用你给的例子来显示我是如何做到的。
这是Bootstrap Docs表单控件的输入表单。代码如下:

<div class="mb-3">
      <label for="formFile" class="form-label">Default file input example</label>
      <input class="form-control" type="file" id="formFile">
    </div>

其思路是将file input tag替换为text input tag,并使用Javascript绑定文件输入表单动作。

<!-- use online bootstrap resource -->   
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">

<div class="mb-3">
  <label for="file_input_id" class="form-label">Default file input example</label>
                  
  <!-- use opacity and height style to hide file input form -->
  <input class="form-control" type="file" id="file_input_id" style="opacity:0;height:0;">
                  

  <!-- use another text input group to replace file input form -->
  <div class="input-group mb-3">
    <span class="input-group-text" id="text_input_span_id">Any text here</span>

    <!-- use 'caret-color: transparent' to hide input cursor, set autocomplete to off to remove possible input hint -->
    <input type="text" id='text_input_id' class="form-control" placeholder="Another text here" style="caret-color: transparent" autocomplete="off">
  </div>
</div>

<!-- use online jQuery -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
  // bind file-input-form click action to text-input-span
  $('#text_input_span_id').click(function () {
    $("#file_input_id").trigger('click');
  })
  // bind file-input-form click action to text-input-form
  $('#text_input_id').click(function () {
    $("#file_input_id").trigger('click');
  })
  // display file name in text-input-form    
  $("#file_input_id").change(function () {            
    $('#text_input_id').val(this.value.replace(/C:\\fakepath\\/i, ''))
  })
</script>

单击输入表单并选择一个文件,它工作!x1c 0d1x
如果要将按钮改为右边,只需更改span和input标记的顺序即可。

相关问题