我已经阅读了同一个问题的其他答案,但我遇到了问题,并会对一些建议表示感谢。 我在我的html文件中有javaScript,并且在提交按钮上有一个Onclick()语句来清除表单,但现在电子邮件确认消息没有出现,并且不再发送消息。如果我把onClick();在表单的主体中,只需单击表单域即可清除每个字段。我真的希望能够提交一条消息,然后在成功发送时清除表单。
<script type ="text/javascript">
function clearform () {
document.getElementById("name").value="";
document.getElementById("email").value="";
document.getElementById("subject").value="";
document.getElementById("message").value="";
}
</script>
<div class="row">
<div class="col-sm-6">
<h2>Send us a message</h2>
<!-- action="replace it with active link."-->
<form action="contact.php" method="post" name="contact-form" id="contact-form" >
<label for="name">Your Name <span>*</span></label>
<input type="text" name="name" id="name" value="" required />
<label for="email">Your E-Mail <span>*</span></label>
<input type="text" name="email" id="email" value="" required />
<label for="subject">Subject</label>
<input type="text" name="subject" id="subject" value="" />
<label for="message">Your Message</label>
<textarea name="message" id="message"></textarea>
<div class="row">
<div class="col-sm-6">
<input type="submit" name="sendmessage" id="sendmessage" value="Submit" onclick="clearform();" />
</div>
<div class="col-sm-6 dynamic"></div>
</div>
</form>
然后我在PHP文件中有以下内容:
private function sendEmail(){
$mail = mail($this->email_admin, $this->subject, $this->message,
"From: ".$this->name." <".$this->email.">\r\n"
."Reply-To: ".$this->email."\r\n"
."X-Mailer: PHP/" . phpversion());
if($mail)
{
$this->response_status = 1;
//$this->response_html = '<p>Thank You!</p>';
}
}
function sendRequest(){
$this->validateFields();
if($this->response_status)
{
$this->sendEmail();
}
$response = array();
$response['status'] = $this->response_status;
$response['html'] = $this->response_html;
echo "<span class=\"alert alert-success\" >Your message has been received. Thanks!</span>";
header("Location: contact.php");// redirect back to your contact form
exit;
}
}
$contact_form = new Contact_Form($_POST, $admin_email, $message_min_length);
$contact_form->sendRequest();
?>
答案 0 :(得分:0)
您必须确保事件继续传播并提交表单:
function clearform () {
document.getElementById("name").value="";
document.getElementById("email").value="";
document.getElementById("subject").value="";
document.getElementById("message").value="";
return true;
}
答案 1 :(得分:0)
没有ajax表单帖子
如果您没有使用ajax提交表单(您似乎没有使用它),则无需使用javascript清除表单,表单将在提交时重新加载并且它将为空
但是,您的location
重定向存在问题:您之前输出的是html,因此重定向可能会失败。
在重定向之前不应输出任何内容,并且可以向网址添加查询变量,以便在表单加载时显示成功消息:
if($this->response_status)
{
$this->sendEmail();
}
header("Location: contact.php");// redirect back to your contact form
exit;
使用ajax发布表单
如果您使用的是ajax(响应变量的设置似乎表明您想要这样做),您应该将clearform ()
调用放入ajax调用的success函数中并删除{{1在php中重定向。相反,您可能想要返回/输出结果:
header()