我想创建一个向我发送电子邮件的表单,但也不加载新页面,而是简单地修改同一页面上的一些 CSS 值。
我一直在搜索这个网站并且一直在玩一些代码。我尝试通过 JavaScript(验证)、PHP(处理和格式化电子邮件)和 jQuery(发送电子邮件和修改 CSS)来做到这一点,但它并不完全正确。我对这些语言还很陌生,所以有点困难。
目前,它通过 JavaScript 正确验证表单,并且除非验证,否则不会提交。完美的。它还发送电子邮件,这很棒!问题是它加载我的 PHP 页面而不是停留在当前页面上。回声“谢谢...”通过 jQuery 放置在 PHP 页面上,而不是放在我的 HTML 中的 div 中。此外,我对 PHP 和 jQuery 代码感到困惑。PHP 当前发送电子邮件,但 jQuery 应该这样做。但是如果我从 PHP 中删除它,它就不会发送电子邮件。
如果你能帮我把所有这些碎片放在一起,我一定会很感激的!
HTML 表单:
<form id='form' method='post' onsubmit="return validateForm()" action='sendemail.php'>
Name: <br />
<input type="text" id="name" name="name" />
<br />
Email: <br />
<input type="email" id="email" name="email" />
<br /><br />
Subject: <br />
<input type="text" id="subject" name="subject" />
<br />
Comments:</a> <br />
<textarea id="comments" name="comments" rows="10" cols="60"></textarea>
<br />
<input type="image" src="..." alt="Submit" name="myFormSubmitted" value="Submit" />
</form>
<div id="formResponse" style="display: none;"></div>
JavaScript(验证):
<script type="text/javascript">
function validateForm() {
var validName = false;
var validEmail = false;
var validSubject = false;
var validComments = false;
//Perform validation here...
if (validName && validEmail && validSubject && validComments) {
return true;
} else {
return false;
}
PHP sendemail.php(处理表单,格式化电子邮件):
<?php
if(isset($_POST['myFormSubmitted'])) {
//Construct format here.....
// Blank message to start with so we can append to it.
$message = '';
// Construct the message
$message .= <<<TEXT
Name: {$_POST['name']}
Email: {$_POST['email']}
Subject: {$_POST['subject']}
Comments: {$_POST['comments']}
{$checkString}
TEXT;
$to = 'sendToThisEmail@example.com';
$subject = $_POST['subject'];
$from = $_POST['name'];
$fromEmail = $_POST['email'];
$header = 'From: ' . $from . '<' . $fromEmail . '>';
//Send the email - shouldn't be here!
mail($to, $subject, $message, $header);
echo 'Thank you for your Email. We will get in touch with you very soon.';
}
?>
jQuery(发送电子邮件,修改 CSS):
$("#form").submit(function() {
$.post('sendemail.php', {name: $('#name').val(), email: $('#email').val(), comments: $('#comments').val(), myFormSubmitted: 'yes'}, function(data) { //I don't understand this line
$("#formResponse").html(data).fadeIn('100'); //Place echo in original page
//Add more CSS changes here...
$('#name, #email, #comments').val(''); // Clear the inputs - what does this do?
}, 'text');
return false;
});
}