【发布时间】:2021-03-11 16:05:27
【问题描述】:
真的很纠结这个,没想到简单的表格会这么复杂。在后端方面,我是新手。
我有 3 个字段;姓名、电子邮件和消息。提交时,我只想在表单框中输入一个简单的“谢谢”消息。我不想发送到另一个页面或刷新到当前页面的顶部。我希望用“谢谢”消息刷新表单,理想情况下,该消息会在几秒钟后消失。
在尝试了几种不同的方法后,我几乎可以使用 JS,使用事件侦听器在单击提交后显示“谢谢”消息。
但是,现在联系表单在提交时不会刷新,并且输入的数据仍会与感谢信息一起显示在表单上。如何让表单在提交时刷新?
我一直使用 WordPress,联系表格看起来很简单。到目前为止,我已经为此花费了数小时。
HTML
<div class="form-box">
<p id="thank-you-message">
Thank you for your message. We will be in touch with you very soon.
</p>
<form method="POST" action="contact-form.php" >
<div class="form-control">
<input class="text-box" id="name" name="name" type="text" placeholder="Your Name*" required>
<input class="text-box" id="email" name="email" type="email" placeholder="Your Email Adress*" required>
</div>
<div>
<textarea id="message" name="message" placeholder="Project Details" required></textarea>
<button class="send" name="submit" type="submit">SEND</button>
</div>
</form>
PHP
<?php
if(isset($_POST['email']) && $_POST['email'] !='') {
$name = $_POST['name'];
$visitor_email = $_POST ['email'];
$message = $_POST ['message'];
$email_from = 'website.com';
$email_subject = "New Form Submission";
$email_body = "User Name: $name.\n".
"User Email: $visitor_email.\n".
"User Message: $message.\n";
$to = "contact@email.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
mail($to,$email_subject,$email_body,$headers);
header("Location: index.html");
}
?>
JS
const form = document.querySelector('form');
const thankYouMessage = document.querySelector('#thank-you-message');
form.addEventListener('submit', (e) => {
e.preventDefault();
thankYouMessage.classList.add('show');
setTimeout(() => form.submit(), 2000);
});
@詹姆斯·巴克
HTML
<form method="POST" action="contact-form.php" >
<?php echo $successMessage ?>
<div class="form-control">
<input type="hidden" name="valid" value="false">
<input class="text-box" id="name" name="name" type="text" placeholder="Your Name*" required>
<input class="text-box" id="email" name="email" type="email" placeholder="Your Email Adress*" required>
</div>
<div>
<textarea id="message" name="message" placeholder="Project Details" required></textarea>
<button class="send" name="button" type="submit">SEND</button>
</div>
</form>
JS
const form = document.querySelector('form');
form.addEventListener('submit', (e) => {
e.preventDefault();
form.valid.value = 'true';
consultForm.submit();
});
PHP
<?php
$successMessage == '';
if($_POST['valid'] == 'true'){
$name = $_POST['name'];
$visitor_email = $_POST ['email'];
$message = $_POST ['message'];
$email_from = 'website.com';
$email_subject = "New Form Submission";
$email_body = "User Name: $name.\n".
"User Email: $visitor_email.\n".
"User Message: $message.\n";
$to = "contact@email.com";
$headers = "From: $email_from \r\n";
$headers .= "Reply-To: $visitor_email \r\n";
$header("Location: index.html");
$success = mail($to,$email_subject,$email_body,$headers);
if ($success){
$successMessage = 'Your Message was sent!';
} else {
$successMessage = 'There was a problem, message was not sent';
}
}
?>
【问题讨论】:
-
不幸的是,使用带有
-
您尝试过什么调试问题?这是客户端问题(浏览器未按预期运行)还是服务器端问题(浏览器发送的请求处理错误)?
-
@TomRoman 它不刷新,表单保持不变,数据仍在内部。我希望表单在点击发送后刷新并显示我的“谢谢”消息。
-
@NicoHaase 抱歉,不确定我是否理解。这是我自己的网站,我只是想让联系表格按我的意愿运作。
-
您究竟尝试检查哪些不工作的地方? “他的联系表单在提交时不刷新”是什么意思,你有什么努力让它发挥作用?
标签: javascript php html forms