メールを送信するフォームを作成したいのですが、新しいページをロードせず、同じページのいくつかの CSS 値を変更するだけです。
私はこのサイトを検索しており、いくつかのコードで遊んでいます。JavaScript (検証)、PHP (電子メールの処理と書式設定)、jQuery (電子メールの送信と CSS の変更) を使用してこれを実行しようとしましたが、まったく正しくありません。私はこれらの言語にかなり慣れていないので、少し難しいです。
現在、JavaScript を介してフォームを正しく検証し、検証しない限り送信しません。完全。また、素晴らしいメールを送信します。問題は、現在のページに留まるのではなく、PHP ページをロードすることです。エコー「ありがとう...」は、jQuery を介して HTML の div ではなく PHP ページに配置されます。また、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;
});
}