A little plugin which makes Bootstrap 4 custom file input dynamic with no dependencies.
You can use it on React and Angular too because this plugin is written with the most used JavaScript framework: VanillaJS.
Features:
- Works with Bootstrap 4
- Works without dependencies and jQuery
- Display file name
- Display file names for
multiple
input - Reset your custom file input to its initial state
- Handle form reset
- Allow custom selectors for input, and form
- Allow to drag and drop files
- Allow you to change the default display with a child in the
<label>
element - Built in UMD to be used everywhere
- Small, only 2kb and less if you gzip it
npm install bs-custom-file-input --save
CDN | Link |
---|---|
jsDelivr | https://cdn.jsdelivr.net/npm/bs-custom-file-input/dist/bs-custom-file-input.js |
jsDelivr, minified | https://cdn.jsdelivr.net/npm/bs-custom-file-input/dist/bs-custom-file-input.min.js |
You should wait for the document ready event and call the init
method to make your custom file input dynamic.
We expose one global variable available everywhere: bsCustomFileInput
$(document).ready(function () {
bsCustomFileInput.init()
})
import bsCustomFileInput from 'bs-custom-file-input'
For more examples check out this file.
This library is UMD ready so you can use it everywhere.
Finds your Bootstrap custom file input and will make them dynamic.
-
inputSelector
- default value:
.custom-file input[type="file"]
- type:
string
You can pass a custom input selector, but be sure to pass a file input selector
- default value:
-
formSelector
- default value:
form
- type:
string
Allows you to pass a custom form selector, but be sure to pass a form selector
- default value:
Removes this plugin from your Bootstrap custom file input and restore them at their first initial state
bsCustomFileInput is compatible with:
- IE10+
- Edge
- Firefox
- Chrome
- Safari
- Chrome Android
- Safari iOS
You can find our BrowserStack list of browsers here.
If you want to thank me, you can support me and become my Patron
Thanks to BrowserStack for providing the infrastructure that allows us to test in real browsers!