如何使用jquery显示自定义样式输入文件的文件名?

Dbb*_*Dbb 19 html javascript css jquery input-field

我使用CSS设置了一个文件输入样式:

.custom-file-upload {
  border: 1px solid #ccc;
  display: inline-block;
  padding: 6px 12px;
  cursor: pointer; 
}
Run Code Online (Sandbox Code Playgroud)
<form>
  <label for="file-upload" class="custom-file-upload">
    <i class="fa fa-cloud-upload"></i> Upload Image
  </label>
  <input id="file-upload" name='upload_cont_img' type="file" style="display:none;">
</form>  
Run Code Online (Sandbox Code Playgroud)

一切正常,但我想显示所选的文件名.这怎么可能使用CSS或jQuery?

Jai*_*Jai 23

您必须绑定并触发[type=file]元素上的change事件,并将文件名称读取为:

$('#file-upload').change(function() {
  var i = $(this).prev('label').clone();
  var file = $('#file-upload')[0].files[0].name;
  $(this).prev('label').text(file);
});
Run Code Online (Sandbox Code Playgroud)
.custom-file-upload {
  border: 1px solid #ccc;
  display: inline-block;
  padding: 6px 12px;
  cursor: pointer;
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
  <label for="file-upload" class="custom-file-upload">
    <i class="fa fa-cloud-upload"></i> Upload Image
  </label>
  <input id="file-upload" name='upload_cont_img' type="file" style="display:none;">
</form>
Run Code Online (Sandbox Code Playgroud)


Moh*_*mad 21

输入更改时需要获取文件名,并将其插入到html中.在代码中this.files[0].name获取所选文件的名称.

$("#file-upload").change(function(){
  $("#file-name").text(this.files[0].name);
});
Run Code Online (Sandbox Code Playgroud)

$("#file-upload").change(function(){
  $("#file-name").text(this.files[0].name);
});
Run Code Online (Sandbox Code Playgroud)
.custom-file-upload {
    border: 1px solid #ccc;
    display: inline-block;
    padding: 6px 12px;
    cursor: pointer; 
}
Run Code Online (Sandbox Code Playgroud)
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
    <label for="file-upload" class="custom-file-upload">
        <i class="fa fa-cloud-upload"></i> Upload Image
    </label>
    <input id="file-upload" name='upload_cont_img' type="file" style="display:none;">
    <label id="file-name"></label>
</form>
Run Code Online (Sandbox Code Playgroud)

你也可以使用纯JavaScript来完成这项工作

document.querySelector("#file-upload").onchange = function(){
  document.querySelector("#file-name").textContent = this.files[0].name;
}
Run Code Online (Sandbox Code Playgroud)

document.querySelector("#file-upload").onchange = function(){
  document.querySelector("#file-name").textContent = this.files[0].name;
}
Run Code Online (Sandbox Code Playgroud)
.custom-file-upload {
  border: 1px solid #ccc;
  display: inline-block;
  padding: 6px 12px;
  cursor: pointer; 
}
Run Code Online (Sandbox Code Playgroud)
<form>
  <label for="file-upload" class="custom-file-upload">
    <i class="fa fa-cloud-upload"></i> Upload Image
  </label>
  <input id="file-upload" name='upload_cont_img' type="file" style="display:none;">
  <label id="file-name"></label>
</form>
Run Code Online (Sandbox Code Playgroud)


小智 7

您可以像这样获取文件名

$('#file-upload')[0].files[0].name
Run Code Online (Sandbox Code Playgroud)


Gok*_*P P 5

您也可以使用此文件上传多个文件

updateList = function() {
  var input = document.getElementById('file');
  var output = document.getElementById('fileList');

  output.innerHTML = '<ul>';
  for (var i = 0; i < input.files.length; ++i) {
    output.innerHTML += '<li>' + input.files.item(i).name + '</li>';
  }
  output.innerHTML += '</ul>';
}
Run Code Online (Sandbox Code Playgroud)
<input type="file" name="file" id="file" multiple 
       onchange="javascript:updateList()" />
<br/>Selected files:
<div id="fileList"></div>
Run Code Online (Sandbox Code Playgroud)