与表单在同一页面上的成功或错误消息

时间:2017-03-16 08:37:55

标签: javascript php jquery html css

成功发送表单后,我希望成功消息显示在发送按钮上方的同一页面上。或者,如果表单未成功发送,我想要一条消息,说明它出现在发送按钮上方。 现在,当表单成功发送时,会出现一个新的空白页面,其中没有任何消息。

以下是我到目前为止:

autosize(document.querySelectorAll('#message_content'));


var validator = $("#comment_form").validate({
  ignore: [],
  rules: {
    gender: {
      required: true,
    },
    first_name: {
      required: true,
    },
    last_name: {
      required: true,
    },
    email: {
      required: true,
      email: true,
      minlength: 3
    },
    email_again: {
      email: true,
      minlength: 3,
      equalTo: '#email'
    },
    message_subject: {
      required: true,
      minlength: 2
    },
    message: {
      required: true,
      minlength: 4
    },
    hiddenRecaptcha: {
      required: function() {
        if (grecaptcha.getResponse() == '') {
          return true;
        } else {
          return false;
        }
      }
    }
  }
});


jQuery.extend(jQuery.validator.messages, {
  required: "This field is required.",
  remote: "Please fix this field.",
  email: "Please enter a valid email address.",
  url: "Please enter a valid URL.",
  date: "Please enter a valid date.",
  dateISO: "Please enter a valid date (ISO).",
  number: "Please enter a valid number.",
  digits: "Please enter only digits.",
  creditcard: "Please enter a valid credit card number.",
  equalTo: "Please use identical email addresses.",
  accept: "Please enter a value with a valid extension.",
  maxlength: jQuery.validator.format("Please enter no more than {0} characters."),
  minlength: jQuery.validator.format("Please enter at least {0} characters."),
  rangelength: jQuery.validator.format("Please enter a value between {0} and {1} characters long."),
  range: jQuery.validator.format("Please enter a value between {0} and {1}."),
  max: jQuery.validator.format("Please enter a value less than or equal to {0}."),
  min: jQuery.validator.format("Please enter a value greater than or equal to {0}.")
});
@font-face {
  font-family: Questrial;
  src: url(Questrial-Regular.otf);
}

div {
  font-family: Questrial;
}

input {
  font-family: Questrial;
}

text-area {
  font-family: Questrial;
}

span {
  font-family: Questrial;
}

p {
  font-family: Questrial;
}

form {
  font-family: Questrial;
}

<style>html {
  text-align: center
}

body {
  display: inline-block;
  margin: 0px auto;
  text-align: left;
}

#comment_form {
  width: 302px;
}

.label-radio {
  font-size: 0.8em;
  color: #d8e3e6;
  margin-right: 10px;
  font-family: questrial;
}

.inputfield3 {
  height: 33px;
  max-height: 33px;
  width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 17px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

.inputfield2 {
  height: 33px;
  max-height: 33px;
  width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 0px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

.textareafield {
  max-height: 350px;
  width: 302px;
  max-width: 302px;
  border-radius: 16px;
  margin-top: -10px;
  margin-bottom: 17px;
  padding: 10px 10px 10px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

#g-recaptcha-outer {
  width: 302px;
  height: 72px;
  display: flex;
  justify-content: center;
  align-items: center;
  overflow: hidden;
  border-radius: 16px;
  margin: -10px auto 20 auto;
}

#recaptcha-header {
  margin: 30px 0px -15px 0px;
  color: #d8e3e6;
  font-size: 1.0em;
  font-family: questrial;
  font-size: 0.8em;
  letter-spacing: -0.03em;
}

#contact_submit_button {
  display: block;
  text-decoration: none;
  margin: 10px auto 80px auto;
  width: 230px;
  height: 33px;
  padding: 0px 15px 0px 15px;
  background-color: rgb(0, 157, 233);
  color: #ffffff;
  border-radius: 16px;
  border: none;
  outline: none;
  font-family: questrial;
  font-size: 1em;
}

.requiredmark {
  margin: 0px 0px 0px 295px;
  display: inline-block;
  color: #d8e3e6;
  padding: 20px 0px 0px 0px;
}

.requiredmark2 {
  margin: -39px 0px 0px 295px;
  display: inline-block;
  color: #d8e3e6;
  padding: 20px 0px 0px 0px;
}

.requiredmark-radio {
  margin: 20px 0px 0px 0px;
  display: inline-block;
  color: #d8e3e6;
  font-family: questrial;
}

.error {
  display: none;
}

.error_show {
  color: red;
}

input.invalid,
textarea.invalid {
  border: 1px solid red;
}

input.valid,
textarea.valid {}

label.error {
  margin-top: -10px;
  margin-bottom: 30px;
  float: none;
  color: red;
  vertical-align: top;
  display: block;
  font-family: Questrial;
}

​ #hiddenRecaptcha-error {
  margin-top: 65px!important;
  margin-bottom: 30px;
  float: none;
  color: red;
  vertical-align: top;
  display: block;
  font-family: Questrial;
}

​ .gender {
  border-radius: 16px;
  margin-top: 5px;
  margin-bottom: 7px;
  padding: 0px 10px 0px 10px;
  overflow: hidden;
  border: none;
  background-color: #ffffff;
  display: inline-block !important;
  font-family: questrial;
  font-size: 0.8em;
}

#gender-error {
  float: right;
  margin-bottom: 0px!important;
  margin-top: 20px!important
}

.errMsg {
  color: #ffffff;
}
<html>

<head>
  <script src='https://www.google.com/recaptcha/api.js'></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/autosize.js?2" type="text/javascript"></script>
  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
  <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.js"></script>
  <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script>
  <script src="{{ 'iframeresizer-min.js' | url_asset }}" type="text/javascript"></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/iframeresizer-contentwindow-min.js" type="text/javascript"></script>


</head>

<body>

  <form id="comment_form" action="form.php" method="post">

    <div class="compulsoryfield">
      <input class="gender" type="radio" name="gender" value="Mr" required><label class="label-radio">Mr.</label>
      <input class="gender" type="radio" name="gender" value="Ms" required><label class="label-radio">Ms.</label>
      <span class="requiredmark-radio">*</span>
    </div>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="first_name" name="first_name" class="inputfield3" type="text" placeholder="first name" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="last_name" name="last_name" class="inputfield3" type="text" placeholder="last name" required>
    </div>

    <input class="inputfield3" type="text" name="company_name" placeholder="company name (if applicable)">
    <input class="inputfield3" type="text" name="customer_number" placeholder="customer number (on invoice if available)">
    <br>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="email" name="email" class="inputfield3" type="email" placeholder="email address" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="email_again" name="email_again" class="inputfield3" type="email" placeholder="re-enter email address to confirm" required></div>


    <input class="inputfield3" type="text" name="telephone_number" placeholder="telephone number (country code included)">
    <br>
    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="message_subject" name="message_subject" class="inputfield3" type="text" placeholder="subject of message" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <textarea id="message_content" name="message_content" class="textareafield" type="text" placeholder="add your message here" rows="8" cols="39" required></textarea></div>


    <p id="recaptcha-header">before sending, please show us you're real:</p>

    <div><span class="requiredmark">*</span>
      <div id="g-recaptcha-outer" class="compulsoryfield2">
        <div class="g-recaptcha" data-sitekey="mySiteKey" required></div>

      </div>
      <input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
      <br><br>
<div class="succMsg"></div>
<div class="errMsg"></div>
      <input id="contact_submit_button" type="submit" name="submit" value="SEND" onclick="myFunction()">

  </form>




</body>

</html>

我的PHP如下:

    <?php

if(isset($_POST['submit']) && !empty($_POST['submit'])):
    if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
        //your site secret key
        $secret = 'mySecretKey';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success):
            //contact form submission code
            $gender = !empty($_POST['gender'])?$_POST['gender']:'';
            $first_name = !empty($_POST['first_name'])?$_POST['first_name']:'';
            $last_name = !empty($_POST['last_name'])?$_POST['last_name']:'';
            $company_name = !empty($_POST['company_name'])?$_POST['company_name']:'';
            $customer_number = !empty($_POST['customer_number'])?$_POST['customer_number']:'';
            $email = !empty($_POST['email'])?$_POST['email']:'';
            $email_again = !empty($_POST['email_again'])?$_POST['email_again']:'';
            $telephone_number = !empty($_POST['telephone_number'])?$_POST['telephone_number']:'';
            $message_subject = !empty($_POST['message_subject'])?$_POST['message_subject']:'';
            $message_content = !empty($_POST['message_content'])?nl2br($_POST['message_content']):'';

            $to = 'eddyhilhorst@fotel.eu';
            $subject = 'FOTEL  |  A new contact form has been submitted now';
            $htmlContent = "
                <h1>Contact request details</h1>
                <p>'<b>From: </b>".$gender." ".$last_name.", ".$first_name."</p>
                <p><b>Company name: </b>".$company_name."</p>
                <p><b>Customer number: </b>".$customer_number."</p>
                <p><b>Email address: </b>".$email."</p>
                <p><b>Telephone number: </b>".$telephone_number."</p>
                <p><b>Message subject: </b>".$message_subject."</p>
                <p><b>Message: </b></br></br>".$message_content."</p>
            ";
            // Always set content-type when sending HTML email
            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            // More headers
            $headers .= 'From:'.$gender.' '.$first_name.' '.$last_name.'<'.$email.'>' . "\r\n".
            'Reply-To: '.$email."\r\n";
            //send email
            @mail($to,$subject,$htmlContent,$headers);

            $succMsg = 'Your contact request have submitted successfully.';
        else:
            $errMsg = 'Robot verification failed, please try again.';
        endif;
    else:
        $errMsg = 'Please click on the reCAPTCHA box.';
    endif;
else:
    $errMsg = '';
    $succMsg = '';
endif;

nl2br($_POST['message_content'])
?>

2 个答案:

答案 0 :(得分:0)

我不确定在哪里放这个,但我想它就在这里:

            $headers .= 'From:'.$gender.' '.$first_name.' '.$last_name.'<'.$email.'>' . "\r\n".
            'Reply-To: '.$email."\r\n";
            //send email
            @mail($to,$subject,$htmlContent,$headers);

            header('Location:currentPage.php?msg=success'); // here
        else:
            header('Location:currentPage.php?msg=error'); // here
        endif;
    else:
        header('Location:currentPage.php?msg=captcha_fail'); // here
    endif;
else:
    $errMsg = '';
    $succMsg = '';
endif;

答案 1 :(得分:-1)

@font-face {
    font-family: Questrial;
    src: url(Questrial-Regular.otf);
}

div {
    font-family: Questrial;
}

input {
    font-family: Questrial;
}

text-area {
    font-family: Questrial;
}

span {
    font-family: Questrial;
}

p {
    font-family: Questrial;
}

form {
    font-family: Questrial;
}

<style>html {
     text-align: center
 }

body {
    display: inline-block;
    margin: 0px auto;
    text-align: left;
}

#comment_form {
    width: 302px;
}

.label-radio {
    font-size: 0.8em;
    color: #d8e3e6;
    margin-right: 10px;
    font-family: questrial;
}

.inputfield3 {
    height: 33px;
    max-height: 33px;
    width: 302px;
    border-radius: 16px;
    margin-top: -10px;
    margin-bottom: 17px;
    padding: 0px 10px 0px 10px;
    overflow: hidden;
    border: none;
    background-color: #ffffff;
    display: inline-block !important;
    font-family: questrial;
    font-size: 0.8em;
}

.inputfield2 {
    height: 33px;
    max-height: 33px;
    width: 302px;
    border-radius: 16px;
    margin-top: -10px;
    margin-bottom: 0px;
    padding: 0px 10px 0px 10px;
    overflow: hidden;
    border: none;
    background-color: #ffffff;
    display: inline-block !important;
    font-family: questrial;
    font-size: 0.8em;
}

.textareafield {
    max-height: 350px;
    width: 302px;
    max-width: 302px;
    border-radius: 16px;
    margin-top: -10px;
    margin-bottom: 17px;
    padding: 10px 10px 10px 10px;
    overflow: hidden;
    border: none;
    background-color: #ffffff;
    display: inline-block !important;
    font-family: questrial;
    font-size: 0.8em;
}

#g-recaptcha-outer {
    width: 302px;
    height: 72px;
    display: flex;
    justify-content: center;
    align-items: center;
    overflow: hidden;
    border-radius: 16px;
    margin: -10px auto 20 auto;
}

#recaptcha-header {
    margin: 30px 0px -15px 0px;
    color: #d8e3e6;
    font-size: 1.0em;
    font-family: questrial;
    font-size: 0.8em;
    letter-spacing: -0.03em;
}

#contact_submit_button {
    display: block;
    text-decoration: none;
    margin: 10px auto 80px auto;
    width: 230px;
    height: 33px;
    padding: 0px 15px 0px 15px;
    background-color: rgb(0, 157, 233);
    color: #ffffff;
    border-radius: 16px;
    border: none;
    outline: none;
    font-family: questrial;
    font-size: 1em;
}

.requiredmark {
    margin: 0px 0px 0px 295px;
    display: inline-block;
    color: #d8e3e6;
    padding: 20px 0px 0px 0px;
}

.requiredmark2 {
    margin: -39px 0px 0px 295px;
    display: inline-block;
    color: #d8e3e6;
    padding: 20px 0px 0px 0px;
}

.requiredmark-radio {
    margin: 20px 0px 0px 0px;
    display: inline-block;
    color: #d8e3e6;
    font-family: questrial;
}

.error {
    display: none;
}

.error_show {
    color: red;
}

input.invalid,
textarea.invalid {
    border: 1px solid red;
}

input.valid,
textarea.valid {}

label.error {
    margin-top: -10px;
    margin-bottom: 30px;
    float: none;
    color: red;
    vertical-align: top;
    display: block;
    font-family: Questrial;
}

​ #hiddenRecaptcha-error {
    margin-top: 65px!important;
    margin-bottom: 30px;
    float: none;
    color: red;
    vertical-align: top;
    display: block;
    font-family: Questrial;
}

​ .gender {
    border-radius: 16px;
    margin-top: 5px;
    margin-bottom: 7px;
    padding: 0px 10px 0px 10px;
    overflow: hidden;
    border: none;
    background-color: #ffffff;
    display: inline-block !important;
    font-family: questrial;
    font-size: 0.8em;
}

#gender-error {
    float: right;
    margin-bottom: 0px!important;
    margin-top: 20px!important
}

.errMsg {
    color: #ffffff;
}


 .isa_success,  .isa_error {
    margin: 10px 0px;
    padding:12px;

}

.isa_success {
    color: #4F8A10;
    background-color: #DFF2BF;
}

.isa_error {
    color: #D8000C;
    background-color: #FFBABA;
}
 .isa_success i, .isa_error i {
    margin:10px 22px;
    font-size:2em;
    vertical-align:middle;
}

 .hidden{
     visibility: hidden
 }
<html>

<head>
  <script src='https://www.google.com/recaptcha/api.js'></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/autosize.js?2" type="text/javascript"></script>
  <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script>
  <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/jquery.validate.js"></script>
  <script src="https://cdn.jsdelivr.net/jquery.validation/1.16.0/additional-methods.min.js"></script>
  <script src="{{ 'iframeresizer-min.js' | url_asset }}" type="text/javascript"></script>
  <script src="https://assets.webshopapp.com/photographycoursetour/iframeresizer-contentwindow-min.js" type="text/javascript"></script>


</head>

<body>


<script type="text/javascript">
  function getUrlVars() {
      var vars = {};
      var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
          function(m,key,value) {
              vars[key] = value;
          });
      return vars;
  }

  var status = getUrlVars()['status'];
  var msg = getUrlVars()['msg'];
  if (status != '' && msg != '') {
        var divBox = "div#alertMsg";
        switch (status)
        {
            case "error" :
                $(divBox).html(msg);
                if ($(divBox).hasClass('isa_success')) {
                    $(divBox).removeClass('isa_success');
                    $(divBox).addClass('isa_error');
                }
                else {
                    $(divBox).addClass('isa_error');
                }
                $(divBox).removeClass('hidden');
                break;
            case "succes" :
                $(divBox).html(msg);
                if ($(divBox).hasClass('isa_error')) {
                    $(divBox).removeClass('isa_error');
                    $(divBox).addClass('isa_success');
                }
                else {
                    $(divBox).addClass('isa_success');
                }
                $(divBox).removeClass('hidden');
                break;
            case "details-page":
                $(divBox).addClass('hidden');
                break;
        }
  }
</script>


  <div id="alertMsg" class="isa_success hidden">
  </div>
  <form id="comment_form" action="form.php" method="post">

    <div class="compulsoryfield">
      <input class="gender" type="radio" name="gender" value="Mr" required><label class="label-radio">Mr.</label>
      <input class="gender" type="radio" name="gender" value="Ms" required><label class="label-radio">Ms.</label>
      <span class="requiredmark-radio">*</span>
    </div>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="first_name" name="first_name" class="inputfield3" type="text" placeholder="first name" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="last_name" name="last_name" class="inputfield3" type="text" placeholder="last name" required>
    </div>

    <input class="inputfield3" type="text" name="company_name" placeholder="company name (if applicable)">
    <input class="inputfield3" type="text" name="customer_number" placeholder="customer number (on invoice if available)">
    <br>

    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="email" name="email" class="inputfield3" type="email" placeholder="email address" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <input id="email_again" name="email_again" class="inputfield3" type="email" placeholder="re-enter email address to confirm" required></div>


    <input class="inputfield3" type="text" name="telephone_number" placeholder="telephone number (country code included)">
    <br>
    <div class="compulsoryfield"><span class="requiredmark">*</span>
      <input id="message_subject" name="message_subject" class="inputfield3" type="text" placeholder="subject of message" required>
    </div>

    <div class="compulsoryfield"><span class="requiredmark2">*</span>
      <textarea id="message_content" name="message_content" class="textareafield" type="text" placeholder="add your message here" rows="8" cols="39" required></textarea></div>


    <p id="recaptcha-header">before sending, please show us you're real:</p>

    <div><span class="requiredmark">*</span>
      <div id="g-recaptcha-outer" class="compulsoryfield2">
        <div class="g-recaptcha" data-sitekey="mySiteKey" required></div>

      </div>
      <input type="hidden" class="hiddenRecaptcha required" name="hiddenRecaptcha" id="hiddenRecaptcha">
      <br><br>
<div class="succMsg"></div>
<div class="errMsg"></div>
      <input id="contact_submit_button" type="submit" name="submit" value="SEND" onclick="myFunction()">

  </form>




</body>

</html>

<?php
    if(isset($_POST['submit']) && !empty($_POST['submit'])):
        if(isset($_POST['g-recaptcha-response']) && !empty($_POST['g-recaptcha-response'])):
        //your site secret key
        $secret = 'mySecretKey';
        //get verify response data
        $verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secret.'&response='.$_POST['g-recaptcha-response']);
        $responseData = json_decode($verifyResponse);
        if($responseData->success):
            //contact form submission code
            $gender = !empty($_POST['gender'])?$_POST['gender']:'';
            $first_name = !empty($_POST['first_name'])?$_POST['first_name']:'';
            $last_name = !empty($_POST['last_name'])?$_POST['last_name']:'';
            $company_name = !empty($_POST['company_name'])?$_POST['company_name']:'';
            $customer_number = !empty($_POST['customer_number'])?$_POST['customer_number']:'';
            $email = !empty($_POST['email'])?$_POST['email']:'';
            $email_again = !empty($_POST['email_again'])?$_POST['email_again']:'';
            $telephone_number = !empty($_POST['telephone_number'])?$_POST['telephone_number']:'';
            $message_subject = !empty($_POST['message_subject'])?$_POST['message_subject']:'';
            $message_content = !empty($_POST['message_content'])?nl2br($_POST['message_content']):'';

            $to = 'eddyhilhorst@fotel.eu';
            $subject = 'FOTEL  |  A new contact form has been submitted now';
            $htmlContent = "
                <h1>Contact request details</h1>
                <p>'<b>From: </b>".$gender." ".$last_name.", ".$first_name."</p>
                <p><b>Company name: </b>".$company_name."</p>
                <p><b>Customer number: </b>".$customer_number."</p>
                <p><b>Email address: </b>".$email."</p>
                <p><b>Telephone number: </b>".$telephone_number."</p>
                <p><b>Message subject: </b>".$message_subject."</p>
                <p><b>Message: </b></br></br>".$message_content."</p>
            ";
            // Always set content-type when sending HTML email
            $headers = "MIME-Version: 1.0" . "\r\n";
            $headers .= "Content-type:text/html;charset=UTF-8" . "\r\n";
            // More headers
            $headers .= 'From:'.$gender.' '.$first_name.' '.$last_name.'<'.$email.'>' . "\r\n".
                'Reply-To: '.$email."\r\n";
            //send email
            @mail($to,$subject,$htmlContent,$headers);

            $succMsg = 'Your contact request have submitted successfully.';
            header("Location:currentPage.php?msg=$succMsg&status=succes");
        else:
            $errMsg = 'Robot verification failed, please try again.';
            header("Location:currentPage.php?msg=$errMsg&status=error");
        endif;
    else:
        $errMsg = 'Please click on the reCAPTCHA box.';
        header("Location:currentPage.php?msg=$errMsg&status=error");
    endif;
else:
    $errMsg = 'Please fill all the input';
    header("Location:currentPage.php?msg=$errMsg&status=error");
endif;

nl2br($_POST['message_content']);
?>

希望这会有所帮助。