Оновлено 2016 р
Бутстрап 4.4
Відображення вибраного імені файлу також може здійснюватися за допомогою простого JavaScript. Ось приклад, який передбачає стандартний вхідний файл-файл із міткою, який є наступним елементом-братом для введення ...
document.querySelector('.custom-file-input').addEventListener('change',function(e){
var fileName = document.getElementById("myInput").files[0].name;
var nextSibling = e.target.nextElementSibling
nextSibling.innerText = fileName
})
https://codeply.com/p/LtpNZllird
Bootstrap 4.1+
Тепер у Bootstrap 4.1 текст заповнювача "Вибрати файл ..." встановлюється в custom-file-label
:
<div class="custom-file" id="customFile" lang="es">
<input type="file" class="custom-file-input" id="exampleInputFile" aria-describedby="fileHelp">
<label class="custom-file-label" for="exampleInputFile">
Select file...
</label>
</div>
Зміна тексту кнопки "Огляд" вимагає трохи додаткового CSS або SASS. Також зверніть увагу, як працює переклад мови за допомогою lang=""
атрибута.
.custom-file-input ~ .custom-file-label::after {
content: "Button Text";
}
https://codeply.com/go/gnVCj66Efp (CSS)
https://codeply.com/go/2Mo9OrokBQ (SASS)
Ще один варіант Bootstrap 4.1
Крім того, ви можете використовувати цей користувальницький плагін введення файлу
https://www.codeply.com/go/uGJOpHUd8L/file-input
Bootstrap 4 Alpha 6 (оригінальна відповідь)
Думаю, тут є 2 окремі питання ..
<label class="custom-file" id="customFile">
<input type="file" class="custom-file-input">
<span class="custom-file-control form-control-file"></span>
</label>
1 - Як змінюється початковий заповнювач та текст кнопки
У Bootstrap 4 початкове значення заповнювача встановлюється на custom-file-control
з псевдоелементом CSS ::after
на основі мови HTML. Початкова кнопка файлу (яка насправді не кнопка, але схожа на одну) встановлюється за допомогою псевдоелемента CSS ::before
. Ці значення можна замінити за допомогою CSS.
#customFile .custom-file-control:lang(en)::after {
content: "Select file...";
}
#customFile .custom-file-control:lang(en)::before {
content: "Click me";
}
2 - Як отримати вибране значення імені файлу та оновити вхідні дані, щоб показати значення.
Після вибору файлу значення можна отримати за допомогою JavaScript / jQuery.
$('.custom-file-input').on('change',function(){
var fileName = $(this).val();
})
Однак, оскільки текст заповнювача для введення є псевдоелементом, немає простого способу маніпулювати цим за допомогою Js / jQuery . Однак ви можете мати інший клас CSS, який приховує псевдо вміст, коли файл вибрано ...
.custom-file-control.selected:lang(en)::after {
content: "" !important;
}
Використовуйте jQuery для перемикання .selected
класу .custom-file-control
після вибору файлу. Це приховає початкове значення заповнювача. Потім вкажіть значення імені файлу в .form-control-file
інтервалі ...
$('.custom-file-input').on('change',function(){
var fileName = $(this).val();
$(this).next('.form-control-file').addClass("selected").html(fileName);
})
Потім ви можете впоратися із завантаженням файлу або повторним виділенням за потреби.
Демонстрація на Codeply (альфа 6)