Understanding the Challenge
In Bootstrap 4, the custom file input component presents a constant "Choose file" label, regardless of file selection. To dynamically update this label with the chosen file's name, an understanding of JavaScript and CSS manipulation is essential.
The Bootstrap 4 File Input Solution
Version 4.5 and Above:
Version 4.1 and Above:
Set a custom label text via CSS:
<code class="css">.custom-file-input ~ .custom-file-label::after { content: "Button Text"; }</code>
Alternative for Bootstrap 4.1 and Above:
Original Solution for Bootstrap 4 Alpha 6:
Customizing Initial Placeholder and Button Text:
Override the default placeholder and button text using CSS:
<code class="css">#customFile .custom-file-control:lang(en)::after { content: "Select file..."; } #customFile .custom-file-control:lang(en)::before { content: "Click me"; }</code>
Retrieving Filename and Updating Input Value:
Use JavaScript/jQuery to obtain the selected file's name:
<code class="javascript">$('.custom-file-input').on('change', function() { var fileName = $(this).val(); });</code>
Hide the placeholder text when a file is chosen, using a CSS class:
<code class="css">.custom-file-control.selected:lang(en)::after { content: "" !important; }</code>
Toggle the CSS class on file selection and insert the filename into the form-control-file span:
<code class="javascript">$('.custom-file-input').on('change', function() { var fileName = $(this).val(); $(this).next('.form-control-file').addClass("selected").html(fileName); });</code>
The above is the detailed content of How to Dynamically Update Bootstrap 4 File Input Labels?. For more information, please follow other related articles on the PHP Chinese website!