Extended Bootstrap Modal is a simple Javascript plugin enables you to generate a complex bootstrap modal without any HTML code.
- Jquery 1.10 or higher.
<!-- Import Jquery -->
<script
src="https://code.jquery.com/jquery-1.12.4.min.js"
integrity="sha256-ZosEbRLbNQzLpnKIkEdrPv7lOy9C27hHQ+Xp8a4MxAQ="
crossorigin="anonymous"></script>
<!-- Import Bootstrap -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Import Extended bootstrap modal plugin -->
<script src="plugin/extendedBootstrapModal.js"></script>
You can simply use the plugin without any parameters, it will generate a simple and classic bootstrap modal with the given text, and a close button.
This is an elegant way to replace the old Javascript Alert, and this is as simple as it.
ExtendedBoostrapModal('Simple modal without any parameters');
You can specify a modal state to change the header color :
- success
- warning
- danger
- info
- primary
The plugin become a powerfull tools when you want to generate complex modal with many HTML components.
- No HTML code
- Many modals on the same page without duplicate code
- Possibility to to add a form with inputs, radio button, checkbox and dropdown list
- Add Bootstrap row with many columns
- Easily customizable
ExtendedBoostrapModal({
autoload: true,
id: 'my-modal',
title: 'Sample modal'
});
You can add an HTML form by using addForm parameter with id, name, and a list of HTML tags. If you use it, you have to manually define a collection of buttons (at least one for closing).
You can define a callback on each button by using callback parameter, and add parameters with arguments.
ExtendedBoostrapModal({
autoload: true,
id: 'my-modal',
title: 'Sample modal',
addForm: {
id: 'form_id',
name: 'form_name',
inputs: {
label: 'textInput',
list: [
{
id: 'input_id',
name: 'input_name',
type: 'text',
value: '',
placeholder: 'my text input'
}
]
},
buttons: [
{
value: 'Cancel',
type: 'button'
},
{
name: 'btn_add',
value: 'Validate',
type : 'button',
class: 'btn-success',
callback: 'my_callback_fct',
arguments : ['arg1', 'arg2']
}
]
}
});
function my_callback_fct(arg1, arg2)
{
}
You can add the following components :
- Input text (with or without pattern)
- Radio button
- Checkbox
- Select
Each component works the same way : you just have to add a node with a name and a tags list.
inputs: {
label: 'input1',
list: [
{
id: 'input_id1',
name: 'input_name1',
type: 'text',
value: '',
placeholder: 'my first text input'
},
{
id: 'input_id2',
name: 'input_name2',
type: 'text',
value: '',
placeholder: 'my second text input with pattern',
pattern: '.{5,}' // Pattern example, contain 5 or more characters
}
]
}
/!\ You have to use the same name for each radio if you want to linked them
radios : {
label : 'radios',
list: [
{
name: 'radio_name',
value: 'choice_1',
content: 'Choice 1',
checked: true
},
{
name: 'radio_name',
value: 'choice_2',
content: 'Choice 2'
}
]
}
checkboxs : {
label : 'checkboxs',
list: [
{
name: 'check1',
content: 'Choice 1'
},
{
name: 'check2',
content: 'Choice 2'
}
]
}
selects: {
label : 'selects',
list : [
{
name:"myList",
options : [
{
name: 'opt1',
value: 'Option 1'
},
{
name: 'opt2',
value: 'Option 2',
selected: true
},
],
}
]
}
Here is a complete sample you can use to build your proper modal.
ExtendedBoostrapModal({
autoload: true,
id: 'my-modal',
title: 'Sample modal',
addForm: {
id: 'form_id',
name: 'form_name',
inputs: {
label: 'textInput',
list: [
{
id: 'input_id',
name: 'input_name',
type: 'text',
value: '',
placeholder: 'my text input'
}
]
},
buttons: [
{
value: 'Cancel',
type: 'button'
},
{
name: 'btn_add',
value: 'Validate',
type : 'button',
class: 'btn-success',
callback: 'my_callback_fct',
arguments : ['arg1', 'arg2']
}
],
radios : {
label : 'radios',
list: [
{
name: 'radio_name',
value: 'choice_1',
content: 'Choice 1'
},
{
name: 'radio_name',
value: 'choice_2',
content: 'Choice 2'
}
]
},
checkboxs : {
label : 'checkboxs',
list: [
{
name: 'check1',
content: 'Choice 1'
},
{
name: 'check2',
content: 'Choice 2'
}
]
},
selects: {
label : 'selects',
list : [
{
name:"myList",
options : [
{
name: 'opt1',
value: 'Option 1'
},
{
name: 'opt2',
value: 'Option 2',
selected: true
},
],
}
]
}
}
});