Integrating with Bootbox

In this example, we will use bootbox.js to display and validate a login form inside a modal. Initially, the login form isn't displayed:
<button type="submit" class="btn btn-default" id="loginButton">Login</button>
<form id="loginForm" method="POST" class="form-horizontal" style="display: none;">...</form>
When click the login button, we will show up the modal. We might need to reset the previous form values using the resetForm method.
const loginForm = document.getElementById('loginForm');
const fv = FormValidation.formValidation(loginForm, {
fields: {
...
},
plugins: {
...
},
});
document.getElementById('loginButton').addEventListener('click', function() {
bootbox
.dialog({
title: 'Login',
message: loginForm,
size: 'small',
show: false // We will show it manually later
})
.on('shown.bs.modal', function() {
// Show the login form
loginForm.style.display = 'block';
// Reset form
fv.resetForm(true);
})
.on('hide.bs.modal', function() {
// Bootbox will remove the modal (including the body
// which contains the login form) after hiding the modal
// Therefor, we need to backup the form
loginForm.style.display = 'none';
document.body.appendChild(loginForm);
})
.modal('show');
});
You can take a look at the Sample Code to see the full code:
Integrating with Bootbox
If you want to use Ajax to submit the form, we can trigger the core.form.valid event:
const fv = FormValidation
.formValidation(loginForm, {
fields: {
...
},
plugins: {
...
},
})
.on('core.form.valid', function() {
// Send the form data to back-end
// You need to grab the form data and create an Ajax request to send them
// Since the Bootbox and Bootstrap require jQuery
// we can use jQuery methods for getting the form data
// and creating Ajax request
$.post($(loginForm).attr('action'), $(loginForm).serialize(), function(result) {
// ... Process the result ...
// Hide the modal containing the form
$(loginForm).parents('.bootbox').modal('hide');
}, 'json');
});