ввод файла bootstrap 4 не показывает имя файла
У меня проблема с классом пользовательского ввода файлов в Bootstrap 4. после того, как я выбрал, какой файл я хочу загрузить, имя файла не отображается.
Я использую этот код:
<div class="input-group mb-3">
<div class="custom-file">
<input type="file" class="custom-file-input" id="inputGroupFile02">
<label class="custom-file-label" for="inputGroupFile02">Choose file</label>
</div>
<div class="input-group-append">
<button class="btn btn-primary">Upload</button>
</div>
</div>
есть идеи, как я могу это исправить, не усложняясь?
5 ответов
вам нужно использовать javascript, чтобы показать имя выбранного файла, как написано в документации:https://v4-alpha.getbootstrap.com/components/forms/#file-browser
здесь вы можете найти решение: Bootstrap 4 Ввод Файла
обновление:
вот пример кода:
<html lang="en">
<head>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/css/bootstrap.min.css" integrity="sha384-rwoIResjU2yc3z8GV/NPeZWAv56rSmLldC3R/AZzGRnGxQQKnKkoFVhFQhNUwEyJ" crossorigin="anonymous">
<script src="https://code.jquery.com/jquery-3.1.1.slim.min.js" integrity="sha384-A7FZj7v+d/sdmMqp/nOQwliLvUsJfDHW+k9Omg/a/EheAdgtzNs3hpfag6Ed950n" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/tether/1.4.0/js/tether.min.js" integrity="sha384-DztdAPBWPRXSA/3eYEEUWrWCy7G5KFbe8fFjk5JAIxUYHKkDx6Qin1DkWx51bBrb" crossorigin="anonymous"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.6/js/bootstrap.min.js" integrity="sha384-vBWWzlZJ8ea9aCX4pEW3rVHjgjt7zpkNpZk+02D9phzyeVkE+jo0ieGizqPLForn" crossorigin="anonymous"></script>
</head>
<body>
<div class="input-group mb-3">
<div class="custom-file">
<input type="file" class="custom-file-input" id="inputGroupFile02"/>
<label class="custom-file-label" for="inputGroupFile02">Choose file</label>
</div>
<div class="input-group-append">
<button class="btn btn-primary">Upload</button>
</div>
</div>
<script>
$('#inputGroupFile02').on('change',function(){
//get the file name
var fileName = $(this).val();
//replace the "Choose a file" label
$(this).next('.custom-file-label').html(fileName);
})
</script>
</body>
</html>
я использовал следующее Для того же:
<script type="application/javascript">
$('input[type="file"]').change(function(e){
var fileName = e.target.files[0].name;
$('.custom-file-label').html(fileName);
});
</script>
ответ Anuja D работает только с одним файлом на странице. Это работает, если их больше одного. Этот фрагмент также покажет все файлы, если это.
<script type="text/javascript">
$('.custom-file input').change(function (e) {
var files = [];
for (var i = 0; i < $(this)[0].files.length; i++) {
files.push($(this)[0].files[i].name);
}
$(this).next('.custom-file-label').html(files.join(', '));
});
</script>
отметим, что $(this).next('.custom-file-label').html($(this)[0].files.join(', '));
не работает. Так вот почему for
петля необходима.
если вы никогда не работаете с несколькими файлами при загрузке файла, этот более простой фрагмент можно использовать.
<script type="text/javascript">
$('.custom-file input').change(function (e) {
$(this).next('.custom-file-label').html(e.target.files[0].name);
});
</script>
этот код работает для меня:
<script type="application/javascript">
$('#elementID').change(function(event){
var fileName = event.target.files[0].name;
if (event.target.nextElementSibling!=null){
event.target.nextElementSibling.innerText=fileName;
}
});
</script>
Если вы хотите, вы можете использовать рекомендуемый плагин Bootstrap для динамического ввода пользовательского файла:https://www.npmjs.com/package/bs-custom-file-input
этот плагин можно использовать С или без jQuery и работает с React an Angular