Php 提交成功后隐藏表单
目前我有一个联系人表单正在工作,但我需要在发送成功后隐藏表单本身。我想在运行“success”消息时调用javascript,但我不知道如何做到这一点 如何隐藏表单,但在表单完成后保留成功消息 提前谢谢Php 提交成功后隐藏表单,php,Php,目前我有一个联系人表单正在工作,但我需要在发送成功后隐藏表单本身。我想在运行“success”消息时调用javascript,但我不知道如何做到这一点 如何隐藏表单,但在表单完成后保留成功消息 提前谢谢 <?php //response generation function $response = ""; //function to generate response function my_contact_form_generate_response($type,
<?php
//response generation function
$response = "";
//function to generate response
function my_contact_form_generate_response($type, $message){
global $response;
if($type == "success") $response = "<div class='success'>{$message}</div>";
else $response = "<div class='error'>{$message}</div>";
}
//response messages
$not_human = "<div class='alert alert-danger'>Verificatie incorrect.</div>";
$missing_content = "<div class='alert alert-danger'>U heeft niet alle verplichte velden ingevuld</div>";
$email_invalid = "<div class='alert alert-danger'>Incorrect e-mail adres.</div>";
$message_unsent = "<div class='alert alert-danger'>Bericht niet verzonden. Probeer opnieuw.</div>";
$message_sent = "<div class='alert alert-success'>Bedankt, wij nemen binnenkort contact met u op</div>";
//user posted variables
$name = $_POST['message_name'];
$email = $_POST['message_email'];
$phone = $_POST['message_phone'];
$message = $_POST['message_text'];
$human = $_POST['message_human'];
$totalmessage = "
Naam: $name \n
Telefoonnummer: $phone \n
E-mail: $email \n
Bericht: $message \n ";
//php mailer variables
$to = "$curauth->user_email";
$subject = "Bel mij terug";
$headers = 'From: email@email.com' . "\r\n" .
'Reply-To: email@email.com' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
if(!$human == 0){
if($human != 2) my_contact_form_generate_response("error", $not_human); //not human!
else {
//validate email
if(!filter_var($email, FILTER_VALIDATE_EMAIL))
my_contact_form_generate_response("error", $email_invalid);
else //email is valid
{
//validate presence of name and message
if(empty($name)){
my_contact_form_generate_response("error", $missing_content);
}
else //ready to go!
{
$sent = wp_mail($to, $subject, $totalmessage, $headers);
if($sent) my_contact_form_generate_response("success", $message_sent); //message sent!
else my_contact_form_generate_response("error", $message_unsent); //message wasn't sent
}
}
}
}
else if ($_POST['submitted']) my_contact_form_generate_response("error", $missing_content);
?>
<div id="respond">
<?php echo $response; ?>
<form action="<?php the_permalink(); ?>" method="post">
<p><label for="name">Uw naam (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
<p><label for="message_phone">Uw Telefoonnummer (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_phone" value="<?php echo esc_attr($_POST['message_phone']); ?>"></label></p>
<p><label for="message_email">Uw e-mail adres: <span>*</span> <br><input type="text" name="message_email" class="wpcf7-form-control wpcf7-text" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
<p><label for="message_text">Uw vraag: <span></span> <br><textarea type="text" name="message_text" class="wpcf7-form-control wpcf7-textarea"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
<p><label for="message_human">Verificatie: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
<input type="hidden" name="submitted" class="wpcf7-form-control wpcf7-submit" value="1">
<p><input type="submit"></p>
</form>
</div>
Nee,ik bel je niet terug:-)
您可以在发送邮件时不显示表单来完成此操作。
因为您已经显示了一条消息,这就足够了:
<?php
if (!isset($sent) || !$sent) {
?>
<form action="<?php the_permalink(); ?>" method="post">
<p><label for="name">Uw naam (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
<p><label for="message_phone">Uw Telefoonnummer (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_phone" value="<?php echo esc_attr($_POST['message_phone']); ?>"></label></p>
<p><label for="message_email">Uw e-mail adres: <span>*</span> <br><input type="text" name="message_email" class="wpcf7-form-control wpcf7-text" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
<p><label for="message_text">Uw vraag: <span></span> <br><textarea type="text" name="message_text" class="wpcf7-form-control wpcf7-textarea"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
<p><label for="message_human">Verificatie: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
<input type="hidden" name="submitted" class="wpcf7-form-control wpcf7-submit" value="1">
<p><input type="submit"></p>
</form>
<?php
}
?>
是的,我不知道
您可以在发送邮件时不显示表单来完成此操作。
因为您已经显示了一条消息,这就足够了:
<?php
if (!isset($sent) || !$sent) {
?>
<form action="<?php the_permalink(); ?>" method="post">
<p><label for="name">Uw naam (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
<p><label for="message_phone">Uw Telefoonnummer (verplicht) <span>*</span> <br><input type="text" class="wpcf7-form-control wpcf7-text" name="message_phone" value="<?php echo esc_attr($_POST['message_phone']); ?>"></label></p>
<p><label for="message_email">Uw e-mail adres: <span>*</span> <br><input type="text" name="message_email" class="wpcf7-form-control wpcf7-text" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
<p><label for="message_text">Uw vraag: <span></span> <br><textarea type="text" name="message_text" class="wpcf7-form-control wpcf7-textarea"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
<p><label for="message_human">Verificatie: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
<input type="hidden" name="submitted" class="wpcf7-form-control wpcf7-submit" value="1">
<p><input type="submit"></p>
</form>
<?php
}
?>
如果表单保持原样(尽管我会将处理帖子的php移到另一个url,如果不是AJAX请求,则重定向回),那么如果用户浏览器中关闭Javascript,它将处理请求
然后添加以下javascript(添加到保存url中):
$(“#我的表单”).submit(函数(evt){
//停止提交表格
evt.preventDefault();
$.ajax(函数(){
方法:“张贴”,
url:“[ADD_SAVE_url]]”,
成功(功能(数据){
//调试响应
控制台日志(数据);
$('#response message').html(response.message);
if(response.success){
$(“#我的表单”).hide();
}
}),
失败(功能(jqXHR、textStatus){
//调试响应
console.log(jqXHR,textStatus);
$('#响应消息').html('Ajax error!');
})
});
});代码>
div>
如果表单保持原样(尽管我会将处理帖子的php移到另一个url,如果不是AJAX请求,则重定向回),那么如果用户浏览器中关闭Javascript,它将处理请求
然后添加以下javascript(添加到保存url中):
$(“#我的表单”).submit(函数(evt){
//停止提交表格
evt.preventDefault();
$.ajax(函数(){
方法:“张贴”,
url:“[ADD_SAVE_url]]”,
成功(功能(数据){
//调试响应
控制台日志(数据);
$('#response message').html(response.message);
if(response.success){
$(“#我的表单”).hide();
}
}),
失败(功能(jqXHR、textStatus){
//调试响应
console.log(jqXHR,textStatus);
$('#响应消息').html('Ajax error!');
})
});
});代码>
div>
将此添加到CSS中:
.none {display:none;}
.block {display:block;}
将此添加到您的代码中:
<?php
//response generation function
$hide_form = 'block';
if(isset($_POST['submitted'])) {
...
else //ready to go!
{
$hide_form = 'none';
...
将此添加到CSS中:
.none {display:none;}
.block {display:block;}
将此添加到您的代码中:
<?php
//response generation function
$hide_form = 'block';
if(isset($_POST['submitted'])) {
...
else //ready to go!
{
$hide_form = 'none';
...
@Fester一个是javascript,这个问题中没有javascript,所以它不是javascript的副本。@Blaatpraat是的,我认为javascript标签需要从这篇文章中删除。这都是HTML和PHP。@费斯特:很好,让我们删除它tag@Fester:我不是OP,我是这里的响应者:-)javascript解决方案甚至不可能,因为页面状态丢失,。如果提交是用Ajax完成的,那么您只能使用javascript解决方案。@Fester说其中一个是javascript,这个问题中没有javascript,所以它不是javascript的副本。@Blaatpraat是的,我认为javascript标记需要从这篇文章中删除。这都是HTML和PHP。@费斯特:很好,让我们删除它tag@Fester:我不是OP,我是这里的响应者:-)javascript解决方案甚至不可能,因为页面状态丢失,。如果提交是用Ajax完成的,那么你只能使用javascript解决方案。太棒了!只需将“”置于if=)之外(需要等待几分钟才能将其标记为正确)太棒了!只需将“”放在if=)之外(需要等待几分钟才能将其标记为正确)