If your web application uses Twitter Bootstrap framework, modal popup integration is very easy. Bootstrap helps you to add a popup to button or link without using additional JavaScript code. Also, using Bootstrap, you can build a well-designed HTML form in less time.
This tutorial will show how you can integrate a modal popup form to your website using Bootstrap and submit the form with jQuery, Ajax, and PHP. For example, we’ll build a contact form with Bootstrap modal popup and submit the form after validation using jQuery, Ajax, and PHP. The following functionality will be implemented in Bootstrap modal form script.
Bootstrap is used to create modal popup and design HTMl form, include the bootstrap and jQuery library first.
<!-- Latest minified bootstrap css --> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css"> <!-- jQuery library --> <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.0/jquery.min.js"></script> <!-- Latest minified bootstrap js --> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
The following HTML creates a dialog popup window using bootstrap. A button is used to trigger this modal window and open a form for submitting the contact request. The button or link needs two data-*
attributes, data-toggle="modal"
and data-target="#modalForm"
. Also, the modal div must have and id attribute that should be the same as data-target
attribute of trigger link or button.
<!-- Button to trigger modal --> <button class="btn btn-success btn-lg" data-toggle="modal" data-target="#modalForm"> Open Contact Form </button> <!-- Modal --> <div class="modal fade" id="modalForm" role="dialog"> <div class="modal-dialog"> <div class="modal-content"> <!-- Modal Header --> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"> <span aria-hidden="true">×</span> <span class="sr-only">Close</span> </button> <h4 class="modal-title" id="myModalLabel">Contact Form</h4> </div> <!-- Modal Body --> <div class="modal-body"> <p class="statusMsg"></p> <form role="form"> <div class="form-group"> <label for="inputName">Name</label> <input type="text" class="form-control" id="inputName" placeholder="Enter your name"/> </div> <div class="form-group"> <label for="inputEmail">Email</label> <input type="email" class="form-control" id="inputEmail" placeholder="Enter your email"/> </div> <div class="form-group"> <label for="inputMessage">Message</label> <textarea class="form-control" id="inputMessage" placeholder="Enter your message"></textarea> </div> </form> </div> <!-- Modal Footer --> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary submitBtn" onclick="submitContactForm()">SUBMIT</button> </div> </div> </div> </div>
The submitContactForm()
function is triggered on clicking the form submit button. In the submitContactForm()
function, popup form data is validated before submit and submitted to the submit_form.php
file for further processing using jQuery and Ajax.
<script> function submitContactForm(){ var reg = /^[A-Z0-9._%+-]+@([A-Z0-9-]+\.)+[A-Z]{2,4}$/i; var name = $('#inputName').val(); var email = $('#inputEmail').val(); var message = $('#inputMessage').val(); if(name.trim() == '' ){ alert('Please enter your name.'); $('#inputName').focus(); return false; }else if(email.trim() == '' ){ alert('Please enter your email.'); $('#inputEmail').focus(); return false; }else if(email.trim() != '' && !reg.test(email)){ alert('Please enter valid email.'); $('#inputEmail').focus(); return false; }else if(message.trim() == '' ){ alert('Please enter your message.'); $('#inputMessage').focus(); return false; }else{ $.ajax({ type:'POST', url:'submit_form.php', data:'contactFrmSubmit=1&name='+name+'&email='+email+'&message='+message, beforeSend: function () { $('.submitBtn').attr("disabled","disabled"); $('.modal-body').css('opacity', '.5'); }, success:function(msg){ if(msg == 'ok'){ $('#inputName').val(''); $('#inputEmail').val(''); $('#inputMessage').val(''); $('.statusMsg').html('<span style="color:green;">Thanks for contacting us, we\'ll get back to you soon.</p>'); }else{ $('.statusMsg').html('<span style="color:red;">Some problem occurred, please try again.</span>'); } $('.submitBtn').removeAttr("disabled"); $('.modal-body').css('opacity', ''); } }); } } </script>
In the submit_form.php
file, the following works are done for processing the form submit request.
$_POST
method.mail()
function.Once the required action is completed, the status message is rendered that would be used by the Ajax success
method.
<?php
if(isset($_POST['contactFrmSubmit']) && !empty($_POST['name']) && !empty($_POST['email']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) && !empty($_POST['message'])){
// Submitted form data
$name = $_POST['name'];
$email = $_POST['email'];
$message= $_POST['message'];
/*
* Send email to admin
*/
$to = 'admin@example.com';
$subject= 'Contact Request Submitted';
$htmlContent = '
<h4>Contact request has submitted at CodexWorld, details are given below.</h4>
<table cellspacing="0" style="width: 300px; height: 200px;">
<tr>
<th>Name:</th><td>'.$name.'</td>
</tr>
<tr style="background-color: #e0e0e0;">
<th>Email:</th><td>'.$email.'</td>
</tr>
<tr>
<th>Message:</th><td>'.$message.'</td>
</tr>
</table>';
// Set content-type header for sending HTML email
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
// Additional headers
$headers .= 'From: CodexWorld<sender@example.com>' . "\r\n";
// Send email
if(mail($to,$subject,$htmlContent,$headers)){
$status = 'ok';
}else{
$status = 'err';
}
// Output status
echo $status;die;
}
This example script provides an easy and quick way to integrate popup form and send form data to email. If you want to store the form data for future use, insert the form data into the MySQL database before sending the email.
Do you want to get implementation help, or enhance the functionality of this script? Click here to Submit Service Request
Nice!
thanks i was getting frustrated, bcoz i’m new in this. And its working fine.
Awesome.
Thank you
can you help me with file attachment in this form?
Very nice
Can I share the php script to save it in the database
Very Very Nice tutorial! Thanks!
Awesome
Nice tutorial! Thanks!
Is this possible with contact form 7 inside a bootstrap modal? I want to keep the bootstrap modal open after submission. Hope you could help me. Thanks