简体   繁体   中英

Pop-up Form Success Message

We have a salesforce form built into a very basic pop up, we want to display a success message upon the submission. Right now it closes the pop up and refreshes the page. Please be patient with me and any help would be great.

EDIT: I am not looking to just use an alert. I would like the success message to appear in the original popup that the form is located.

This is what I have:

<?php
$firstname_status = '';
$lastname_status = '';
$email_status = '';
$phone_status = '';

// If form submits then check form post values.
// Based on proper field validation do curl post to specific location or display proper message



echo $_POST['post_url'];
if($_POST && isset($_POST['post_url']{0}))
{
    if (
        isset($_POST['email']{0}) &&
        filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) &&
        isset($_POST['first_name']{0}) &&
        trim($_POST['first_name']) != '' &&
        isset($_POST['last_name']{0}) &&
        trim($_POST['last_name']) != '' &&
        (trim($_POST['phone']) == '' || (is_numeric($_POST['phone']) && in_array(strlen($_POST['phone']), array(9,10,12,14))) || preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', $_POST['phone']) == true || preg_match('/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$/', $_POST['phone']) == true)
       )
    {
        // Remove all characters from phone field to make it an integer value
        $_POST['phone'] = preg_replace('/[^0-9]/', '', $_POST['phone']);

        // Call function post_to_url to post form values through curl
        $return = post_to_url($_POST['post_url'], $_POST);


    }
    else
    {
        // Check if first name is not blank or set proper error message
        if(!isset($_POST['first_name']{0}) || trim($_POST['first_name']) == '')
        {
            $_POST['first_name'] = '';
            $firstname_status = '<label id="first_name-error" class="error" for="first_name">Please enter your first name</label>';
        }

        // Check if last name is not blank or set proper error message
        if(!isset($_POST['last_name']{0})  || trim($_POST['last_name']) == '')
        {
            $_POST['last_name'] = '';
            $lastname_status = '<label id="last_name-error" class="error" for="last_name" style="display: inline;">Please enter your last name</label>';
        }

        // Check if email is not blank and proper email format or set proper error message
        if(!isset($_POST['email']{0}) || !filter_var($_POST['email'], FILTER_VALIDATE_EMAIL))
        {
           $email_status =  '<label id="email-error" class="error" for="email" style="display: inline;">Please enter a valid email address</label>';
        }

        // Check if phone is not blank then check phone numver format (integer / xxx-xxx-xxx / (xxx) xxx-xxxx) validation
        if(isset($_POST['phone']{0}) && (!is_numeric($_POST['phone']) || !in_array(strlen($_POST['phone']), array(9,10,12,14))) && preg_match('/^[0-9]{3}-[0-9]{3}-[0-9]{4}$/', $_POST['phone']) == false && preg_match('/^\([0-9]{3}\) [0-9]{3}-[0-9]{4}$/', $_POST['phone']) == false)
        {
            $phone_status = '<label style="display: inline;" for="phone" class="error" id="phone-error">Please enter valid phone number</label>';
        }


    }

}
?>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="../jquery.js"></script>
<script src="../jquery.validate.js"></script>

<script>
// Custom method to check phone number format
$.validator.addMethod('customphone', function (value, element) {
    if(value != '')
    {
        return this.optional(element) || (/^[0-9]+$/.test(value)  && value.length == 10)|| /^\d{3}-\d{3}-\d{4}$/.test(value) || /^\(\d{3}\) \d{3}-\d{4}$/.test(value);
    }
    else
        return true;
}, "Please enter a valid phone number");

$().ready(function() {

    $("#pop_up").validate({
        rules: {
            first_name: "required",
            last_name: "required",
            email: {
                required: true,
                email: true
            },
            phone: {
                customphone : 'customphone',
                required: false
            }

        },
        messages: {
            first_name: "Please enter your first name",
            last_name: "Please enter your last name",
            email: {
                required: "Please enter your email address",
                email: "Please enter a valid email address"
            }
        }
    });

});
</script>

<form action="" method="POST" id="pop_up">

    <input type=hidden name="oid" value="###############">
    <div class="field-wrap text-wrap label-above"><label for="first_name">First Name </label><?=$firstname_status;?><input id="first_name" maxlength="40" name="first_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['first_name']);?>" /></div>

    <div class="field-wrap text-wrap label-above"><label for="last_name">Last Name </label><?=$lastname_status;?><input id="last_name" maxlength="80" name="last_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['last_name']);?>" /></div>

    <div class="field-wrap text-wrap label-above"><label for="email">Email Address </label><?=$email_status;?><input id="email" maxlength="80" name="email" size="20" type="email" class="textbox" required="required" value="<?php echo stripslashes($_POST['email'])?>" /></div>

    <div class="field-wrap text-wrap label-above"><label for="phone">Phone Number </label><?=$phone_status;?><input id="phone" maxlength="40" name="phone" size="20" type="text" class="textbox" value="<?php echo $_POST['phone']?>" /></div>


    <div class="field-wrap submit-wrap label-above"><input type="submit" name="submit" value="See the Offer" class="form-button"></div>
    <input type="hidden" value="###############" id="Campaign_ID" name="Campaign_ID">
    <input type="hidden" value="Pop-up" id="################" name="######################" /> <!-- this is email offer -->
    <input type="hidden" value="<?=$_GET['lead_source']?>" id="lead_source" name="lead_source">
    <input type="hidden" value="https://www.salesforce.com/######" name="post_url" id="post_url">

</form>

POPUP

<script src="jquery-cookie.js"></script>
  <script>
  $(document).ready(function(){
    // check to see if the cookie exists
    var cookieExists = Cookies.get('showPopup');

    // if the cookie does not exist, then step into here
    if(!cookieExists) {
      // set the cookie
      Cookies.set('showPopup', 'true', { expires: 1 });

      // fade in the popup
      $("#overlay").delay(6000).fadeIn(600);
    }

    // this is an extra action that can be called any time
    $(".close").click(function(){
        $("#overlay").hide();
    });
  });

  </script>



    <article id="overlay" style="display: none;">


                <section id="form">
                    <h3 class="gold">We’re here to help</h3>


                    <?php echo do_shortcode("[salesforce]"); ?>


                    <i class="close fa fa-times-circle fa-2x" style="left: -10px; bottom: -10px;"></i> <a class="close" href="#close">close</a>



                </section>

            </article>

 $(document).ready(function(){ // fade in the popup $("#overlay").delay(6000).fadeIn(600); }) // this is an extra action that can be called any time $(".close").click(function(){ $("#overlay").hide(); }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script> <script src="https://code.jquery.com/jquery-3.1.1.min.js"></script> <script src="http://stacksnippets.net/js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <article id="overlay" style="display: none;"> <section id="form"> <h3 class="gold">We're here to help</h3> <form action="" method="POST" id="pop_up"> <input type=hidden name="oid" value="###############"> <div class="field-wrap text-wrap label-above"><label for="first_name">First Name </label><?=$firstname_status;?><input id="first_name" maxlength="40" name="first_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['first_name']);?>" /></div> <div class="field-wrap text-wrap label-above"><label for="last_name">Last Name </label><?=$lastname_status;?><input id="last_name" maxlength="80" name="last_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['last_name']);?>" /></div> <div class="field-wrap text-wrap label-above"><label for="email">Email Address </label><?=$email_status;?><input id="email" maxlength="80" name="email" size="20" type="email" class="textbox" required="required" value="<?php echo stripslashes($_POST['email'])?>" /></div> <div class="field-wrap text-wrap label-above"><label for="phone">Phone Number </label><?=$phone_status;?><input id="phone" maxlength="40" name="phone" size="20" type="text" class="textbox" value="<?php echo $_POST['phone']?>" /></div> <div class="field-wrap submit-wrap label-above"><input type="submit" name="submit" value="See the Offer" class="form-button"></div> <input type="hidden" value="###############" id="Campaign_ID" name="Campaign_ID"> <input type="hidden" value="Pop-up" id="################" name="######################" /> <!-- this is email offer --> <input type="hidden" value="<?=$_GET['lead_source']?>" id="lead_source" name="lead_source"> <input type="hidden" value="https://www.salesforce.com/######" name="post_url" id="post_url"> </form> <i class="close fa fa-times-circle fa-2x" style="left: -10px; bottom: -10px;"></i> <a class="close" href="#close">close</a> </section> </article> 

Unfortunately jsfiddle, though generally great, doesn't appear to like form submissions, so this a temporary codepen demo . In principle this solution involves inserting jquery submit function before the validator to intercept submission action and apply success message before then resuming the action using the following code:

JS:

// fade in the popup
$("#overlay").fadeIn(1500);

// this is an extra action that can be called any time
$(".close").click(function() {
    $("#overlay").hide();
});

$(window).load(function() {

    var popup = $("form#pop_up");

    popup.submit(function(event) {
        var $this = $(this);
        if (!$this.hasClass('paused')) { // check if it isn't in a pause state
            event.preventDefault(); // prevent the submission
            $this.addClass('paused'); // use this class as a flag
            $("#overlay").append('SUCCESS!'); // add the success message
            setTimeout(function() {
                $("#overlay").append('  ...');
                $(".form-button").trigger('click');  // mechanically trigger a second click
            }, 2000); // define a delay
        }
    })

    popup.validate({
        rules: {
            first_name: "required",
            last_name: "required",
            email: {
                required: true,
                email: true
            },
            phone: {
                customphone: 'customphone',
                required: false
            }
        },
        messages: {
            first_name: "Please enter your first name",
            last_name: "Please enter your last name",
            email: {
                required: "Please enter your email address",
                email: "Please enter a valid email address"
            }
        },
        success: function(event) {
            //   alert('success message');
            // do other things for a valid form

        },
        submitHandler: function(form, event) {
            // do other things for a valid form

        }
    });

});

HTML:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<script src="https://validatejs.org/validate.min.js"></script>


<article id="overlay" style="display: none;">


    <section id="form">
        <h3 class="gold">We’re here to help</h3>


        <form action="" method="POST" id="pop_up">

            <input type=hidden name="oid" value="###############">
            <div class="field-wrap text-wrap label-above">
                <label for="first_name">First Name</label>
                <?=$firstname_status;?>
                    <input id="first_name" maxlength="40" name="first_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['first_name']);?>" />
            </div>

            <div class="field-wrap text-wrap label-above">
                <label for="last_name">Last Name</label>
                <?=$lastname_status;?>
                    <input id="last_name" maxlength="80" name="last_name" size="20" type="text" required="required" value="<?php echo stripslashes($_POST['last_name']);?>" />
            </div>

            <div class="field-wrap text-wrap label-above">
                <label for="email">Email Address</label>
                <?=$email_status;?>
                    <input id="email" maxlength="80" name="email" size="20" type="email" class="textbox" required="required" value="<?php echo stripslashes($_POST['email'])?>" />
            </div>

            <div class="field-wrap text-wrap label-above">
                <label for="phone">Phone Number</label>
                <?=$phone_status;?>
                    <input id="phone" maxlength="40" name="phone" size="20" type="text" class="textbox" value="<?php echo $_POST['phone']?>" />
            </div>


            <div class="field-wrap submit-wrap label-above">
                <input type="submit" name="submit" value="See the Offer" class="form-button">
            </div>
            <input type="hidden" value="###############" id="Campaign_ID" name="Campaign_ID">
            <input type="hidden" value="Pop-up" id="################" name="######################" />
            <!-- this is email offer -->
            <input type="hidden" value="<?=$_GET['lead_source']?>" id="lead_source" name="lead_source">
            <input type="hidden" value="https://www.salesforce.com/######" name="post_url" id="post_url">

        </form>


        <i class="close fa fa-times-circle fa-2x" style="left: -10px; bottom: -10px;"></i> <a class="close" href="#close">close</a>


    </section>

</article>

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM