I am using jQuery to swap out the image here after the submit button on an email from is submitted. This part works very well, however, I also need to generate the email from the form contents.
Here is the form:
<form action="estimate.php" action="post">
<fieldset>
<input type="text" name="name" value="FULL NAME" onfocus="if (this.value=='FULL NAME') this.value='';"/>
<input type="text" name="phone" value="PHONE NUMBER" onfocus="if (this.value=='PHONE NUMBER') this.value='';"/>
<input type="text" name="email" value="EMAIL" onfocus="if (this.value=='EMAIL') this.value='';"/>
<input type="text" name="date" value="MOVE DATE" onfocus="if (this.value=='MOVE DATE') this.value='';"/>
<input type="text" name="origin" value="ORIGINATING ADDRESS" onfocus="if (this.value=='ORIGINATING ADDRESS') this.value='';"/>
<input type="text" name="destination" value="DESTINATION ADDRESS" onfocus="if (this.value=='DESTINATION ADDRESS') this.value='';"/>
<select name="move-type">
<option value="" selected="selected">TYPE OF MOVE</option>
<option value="Private">Private</option>
<option value="Commercial">Commercial</option>
</select>
<input id="quoteSubmit"
type="image" src="_images/btn_submit.png" alt=""
onmouseover="javascript:this.src='_images/btn_submit-over.png'"
onmouseout="javascript:this.src='_images/btn_submit.png'"/>
</fieldset>
</form>
Here is the jQuery:
// free quote form
$('#freeQuote form').submit(function(e){
//Set the data ready for ajax post
var formdata = $(this).serialize();
$.post("estimate.php",formdata,function(data){
if(data.error)
{
alert('Error: ' + data.error);
return;
}
});
//The Image
var Image = $('<img />').attr({src:'_images/free-quote-confirm.png', width:231, height:267, alt:"Success"});
//Remove the form
$('#freeQuote form').remove()
//Add the image inside the div
$('#freeQuote').append(Image);
//Return false so the form does not send as normal. you can also use e.PreventDefault():
return false;
});
Here is the PHP:
<?php # sends contents of Free Estimate form
if (isset($_POST['submitted'])) {
$errors = array();
// Check for empty fields
if (empty($_POST['name'])) {
$errors[] = 'Please enter your name.';
}
if (empty($_POST['email'])) {
$errors[] = 'Please enter your email address.';
}
if (empty($_POST['date'])) {
$errors[] = 'Please enter the date of your move.';
}
if (empty($_POST['origin'])) {
$errors[] = 'Please enter the origin of your move.';
}
if (empty($_POST['destination'])) {
$errors[] = 'Please enter the destination.';
}
if (empty($errors)) { // everything is okay
$body = "The following Free Estimate Request has been submitted:\n
Submitted by: {$_POST['name']}\r
E-mail: {$_POST['email']}\r
Phone: {$_POST['phone']}\r
Move date {$_POST['date']}\r
Moving from: {$_POST['origin']}\r
Moving to: {$_POST['destination']}\r
Move type: {$_POST['move-type']}\r;
mail ('[email protected]', 'Free Estimate Request', $body, 'From: [email protected]');
// end email
} else {
echo '<h2>Error!</h2>
<p class="errors">The following error(s) occurred:<br />';
foreach ($errors as $msg) {
echo " - $msg<br />\n";
}
echo '</p><p>Please go back and try again.</p><p><br /></p>';
}
};
?>
The basic problem is, I can click the submit button without anything entered in the fields, and I don't get an email.
Any help would be appreciated.
Thanks.