Hello all, I’m having problems with my contact form. I have an ajax form so the page doesn’t reload and a “thank you” modal (bootstrap3) that should display after the form has successfully been submitted.
The problem i’m having is that the form isn’t performing any error checking and the “thank you” is firing even when no information has been entered. What am I missing?
Form:
<!-- thankYouModal -->
<div class="modal fade" id="thankYouModal" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel">
<div class="modal-dialog modal-lg ">
<div class="modal-content alert alert-success">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
<h4 class="modal-title h2"><strong>Your Claim Information Has Been Submitted</strong></h4>
</div>
<div class="modal-body">
<p>Thank you for choosing Century Glass as your local auto glass provider. A Customer Service Representative will contact you soon to complete your request.</p>
<p>Century Glass is an Insurance Company Approved Auto Glass Shop that offers a Free Mobile Service and provides a Lifetime No-Leak Warranty.</p>
</div>
<div class="modal-footer">
<!--<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save changes</button>-->
</div>
</div><!-- /.modal-content -->
</div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<!-- /thankYouModal -->
<form role="ajaxExample" method="post" action="" enctype="multipart/form-data" id="agents">
<div id="response"></div>
<div class="row">
<div class="col-sm-4 info-board info-board-red">
<h4>Customer Information</h4>
<div class="form-group">
<label for="name"><span class="required">*</span> Policyholder's Name:</label>
<input type="text" name="policyName" id="policyName" tabindex="1" class="form-control" required>
</div>
<div class="form-group">
<label for="homePhone"><span class="required">*</span> Home/Mobile Phone:</label>
<input type="text" name="homePhone" id="homePhone" tabindex="2" class="form-control" required />
</div>
<div class="form-group">
<label for="workPhone"><span class="required">*</span> Work Phone:</label>
<input type="text" name="workPhone" id="workPhone" tabindex="3" class="form-control" required />
</div>
<div class="form-group">
<label for="filerName">Your Name:</label>
<input type="text" name="filerName" id="filerName" class="form-control" tabindex="4">
</div>
<div class="form-group">
<label for="agentOrNot">Are you an insurance agent?</label><br>
<label class="radio-inline">
<input type="radio" name="agentOrNot" id="agentOrNot" value="YES" checked tabindex="5"> Yes
</label>
<label class="radio-inline">
<input type="radio" name="agentOrNot" id="agentOrNot" value="NO" tabindex="6"> No
</label>
</div>
</div>
<div class="col-sm-4 info-board info-board-red">
<h4>Insurance Information</h4>
<div class="form-group">
<label for="policy">Policy Number:</label>
<input type="text" name="policy" id="policy" tabindex="8" class="form-control" />
</div>
<div class="form-group">
<label for="insCompany">Ins. Company:</label>
<input type="text" name="insCompany" id="insCompany" tabindex="9" class="form-control" />
</div>
<div class="form-group">
<label for="agentName">Agent's Name:</label>
<input type="text" name="agentName" id="agentName" tabindex="10" class="form-control" />
</div>
<div class="form-group">
<label for="vin">VIN Number:</label>
<input type="text" name="vin" id="vin" maxlength="17" tabindex="11" class="form-control" />
</div>
<div class="form-group">
<label for="compCoverage">Comprehensive Coverage?</label><br>
<label class="radio-inline">
<input type="radio" name="compCoverage" id="compCoverage" value="YES" tabindex="12" checked /> Yes
</label>
<label class="radio-inline">
<input type="radio" name="compCoverage" id="compCoverage" value="NO" tabindex="13" /> No
</label>
</div>
<div class="form-group">
<label for="dateOfLoss">Date Of Loss:</label>
<input type="date" name="dateOfLoss" id="dateOfLoss" tabindex="14" class="form-control" />
</div>
</div>
<div class="col-sm-4 info-board info-board-red">
<h4>Vehicle Information</h4>
<div class="form-group">
<label for="year">Year:</label>
<select name="year" id="year" tabindex="15" class="form-control">
<option value="">Select...</option>
<?php
for ($x = date("Y") + 1; $x >= 1962; $x--)
{
echo '<option value="'.$x.'"'.'>'.$x."</option>";
}
?>
</select>
</div>
<div class="form-group">
<label for="make">Make:</label>
<input type="text" name="make" id="make" tabindex="16" class="form-control" />
</div>
<div class="form-group">
<label for="model">Model:</label>
<input type="text" name="model" id="model" tabindex="17" class="form-control" />
</div>
<div class="form-group">
<label for="bodyStyle">Body Style:</label>
<select name="bodyStyle" id="bodyStyle" tabindex="18" class="form-control">
<option value="" selected="selected">Select...</option>
<option value="Sedan">Sedan</option>
<option value="Convertible">Convertible</option>
<option value="Coupe">Coupe</option>
<option value="Extended Cab">Extended Cab</option>
<option value="Other">Other</option>
</select>
</div>
<div class="form-group">
<label for="doors">Number of Doors:</label><br>
<label class="radio-inline">
<input type="radio" name="doors" id="doors" value="2" checked tabindex="19"> 2 Doors</label>
</label>
<label class="radio-inline">
<input type="radio" name="doors" id="doors" value="4" tabindex="20"> 4 Doors</label>
</label>
</div>
<div class="form-group">
<label for="damagedGlass">Damaged Glass:</label>
<select name="damagedGlass" id="damagedGlass" tabindex="21" class="form-control">
<option value="" selected>Select...</option>
<option value="Windshield">Windshield</option>
<option value="Back Glass">Back Glass</option>
<option value="Door Glass">Door Glass</option>
<option value="Vent Glass">Vent Glass</option>
<option value="Quarter Glass">Quarter Glass</option>
<option value="Other">Other</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-sm-12 info-board info-board-blue">
<div class="form-group">
<label for="spamQuestion">
<span class="required">*</span> Anti-spam... Please Solve The Math Problem:<br>
<?php
$a = rand(1, 10);
$b = rand(1, 10);
echo $a." + ".$b." = ?";
?>
</label>
<input type="hidden" value="<?php echo $a;?>" name="value1" />
<input type="hidden" value="<?php echo $b;?>" name="value2" />
<input type="text" name="answer" value="what's the result?" onclick="this.value=''" tabindex="22" class="form-control"/>
</div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<input type="hidden" name="honeypot" id="honeypot" value="http://">
<input type="hidden" name="humancheck" id="humanCheck" class="clear" value="">
<button type="submit" name="submit" id="submit" tabindex="23" class="btn btn-success">Submit Claim</button> <input type="reset" name="reset1" value="Reset Form" tabindex="24" class="btn btn-red" />
<div id="response"></div>
</div>
</div>
</form>
JS:
$(document).ready(function() {
$('#agents input:submit').click(function() {
$('#agents form').attr('action', 'http://' + document.domain + '/agents/php/feedback_custom.php');
$('#agents form').submit();
});
$('form #response').hide();
$('#submit').click(function(e) {
// prevent forms default action until
// error check has been performed
e.preventDefault();
// grab form field values
var valid = '';
var policyNameResponse = '';
var homePhoneResponse = '';
var workPhoneResponse = '';
var filerNameResponse = '';
var policyResponse = '';
var insCompanyResponse = '';
var agentNameResponse = '';
var vinResponse = '';
var dateOfLossResponse = '';
var yearResponse = '';
var makeResponse = '';
var modelResponse = '';
var bodyStyleResponse = '';
var damagedGlassResponse = '';
var required = ' is required.';
//Custom Information
var name = $('form #policyName').val();
var homePhone = $('form #homePhone').val();
var workPhone = $('form #workPhone').val();
var filerName = $('form #filerName').val();
//Insurance Information
var policy = $('form #policy');
var insCompany = $('form #insCompany').val();
var agentName = $('form #agentName').val();
var vin = $('form #vin').val();
var dateOfLoss = $('form #dateOfLoss').val();
//Vehicle Information
var year = $('form #year').val();
var make = $('form #make').val();
var model = $('form #model').val();
var bodyStyle = $('form #bodyStyle').val();
var vin = $('form #vin').val();
var damagedGlass = $('form #damagedGlass').val();
//Spam Info
var honeypot = $('form #honeypot').val();
var humanCheck = $('form #humanCheck').val();
// perform error checking
//Customer
if (name = '' || name.length <= 2) {
policyNameResponse += '<p>Policy holder name' + required +'</p>';
}
if (homePhone = '' || homePhone.length < 7) {
homePhoneResponse += '<p>Home phone' + required + '</p>';
}if (workPhone = '' || workPhone.length < 7) {
workPhoneResponse += '<p>Wome phone' + required + '</p>';
}
//Insurance
if (policy = '' || policy.length <=5) {
policyResponse += '<p>Policy number' + required + '</p>';
}
if (insCompany = '' || insCompany.length <3) {
insCompanyResponse += '<p>Insurance Company Required</p>';
}
if (agentName = '' || agentName.length <= 6) {
agentNameResponse += '<p>Please include your name in the ' + '"Sent By"' + 'field</p>';
}
if (vin = '' || vin.length <= 3) {
vinResponse += '<p>Cause of loss' + required + '</p>';
}
//Vehicle
if (year = '' || year.length < 4) {
yearResponse += '<p>Vehicle year (ex: 2011)' + required + '</p>';
}
if (make = '' || make.length <=2) {
makeResponse += '<p>Vehicle make' + required + '</p>';
}
if (model = '' || model.length < 2) {
modelResponse += '<p>Vehicle model' + required + '</p>';
}
if (bodyStyle = '') {
bodyStyleReponse += '<p>Please select a body style</p>';
}
if (vin = '' || vin.length <= 16) {
vinResponse += '<p>Vin number' + required + '</p>';
}
if (damagedGlass = '') {
damagedGlassResponse += '<p>Damaged Glass' + required + '</p>';
}
if (honeypot != 'http://') {
valid += '<p>Spambots are not allowed.</p>';
}
if (humanCheck != '') {
valid += '<p>A human user' + required + '</p>';
}
// let the user know if there are erros with the form
if (valid != '') {
$('form #response').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
'<strong>Please correct the errors below.</strong>' + '</div>'
).fadeIn('fast').focus();
if (policyNameResponse != '') {
$('form #policyNameResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
policyNameResponse + '</div>'
).fadeIn('fast');
}
if (homePhoneResponse != '') {
$('form #homePhoneResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
homePhoneResponse + '</div>'
).fadeIn('fast');
}
if (workPhoneResponse != '') {
$('form #workPhoneResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
workPhoneResponse + '</div>'
).fadeIn('fast');
}
if (filerNameResponse != '') {
$('form #filerNameResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
filerNameResponse + '</div>'
).fadeIn('fast');
}
if (policyResponse != '') {
$('form #policyResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
policyResponse + '</div>'
).fadeIn('fast');
}
if (insCompanyResponse != '') {
$('form #insCompanyResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
insCompanyResponse + '</div>'
).fadeIn('fast');
}
if (agentNameResponse != '') {
$('form #agentNameResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
agentNameResponse + '</div>'
).fadeIn('fast');
}
if (vinResponse != '') {
$('form #vinResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
vinResponse + '</div>'
).fadeIn('fast');
}
if (dateOfLossResponse != '') {
$('form #dateOfLossResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
dateOfLossResponse + '</div>'
).fadeIn('fast');
}
if (yearResponse != '') {
$('form #yearResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
yearResponse + '</div>'
).fadeIn('fast');
}
if (makeResponse != '') {
$('form #makeResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
makeResponse + '</div>'
).fadeIn('fast');
}
if (modelResponse != '') {
$('form #modelResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
modelResponse + '</div>'
).fadeIn('fast');
}
if (bodyStyleResponse != '') {
$('form #bodyStyleResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
bodyStyleResponse + '</div>'
).fadeIn('fast');
}
if (damagedGlassResponse != '') {
$('form $damagedGlassResponse').removeClass().addClass('error')
.html('<div class="alert alert-danger">'+
damagedGlassResponse + '</div>'
).fadeIn('fast');
}
}
// let the user know something is happening behind the scenes
// serialize the form data and send to our ajax function
else {
$('form #response').removeClass().addClass('processing').html('Processing...').fadeIn('fast').fadeOut('fast');
var formData = $('form').serialize();
submitForm(formData);
}
});
});
function submitForm(formData) {
$.ajax({
type: 'POST',
url: '../agents/php/feedback_custom.php',
data: formData,
dataType: 'json',
cache: false,
timeout: 7000,
success:
function(data) {
//we are getting data.error (from ajax, which is formData) and data.msg from our feedback.php
$("#thankYouModal").modal('show');
},
error:
function (XMLHttpRequest, textStatus, errorThrown) {
$('form #response').removeClass().addClass('error')
.html('<div class="alert alert-danger">' +
'<p>There was an <strong>ERROR SENDING THE FORM</strong><br>Please make sure you have filled out the required fields and resend the form.</p>' +
'</div>').fadeIn('fast');
}
});
};
i can provide the .php code if needed.