Skip to content Skip to sidebar Skip to footer

Get Parent Page To Scroll To Top When Iframe's Form Validation Fails

A client wants to adapt an existing form for their site-wide subscription application. Due to the way the site is laid out, the easiest way to implement this was to have an iframe

Solution 1:

The solution for this was to use window.postMessage.

In the parent window, I had

function receiveMessage(e){

  console.log("Received Message: " + e);

  if (e.originalEvent.origin === 'http://www.site.client.com') {
    $("html, body").animate({
        scrollTop : 441
    }, "fast");
  }
}
$(window).bind("message", receiveMessage);

and added this for the original js code for the iframe content:

window.parent.postMessage("Scroll", "http://www.site.client.com/");

This results in the iframe posting a message that is captured by the parent. Since this is the only message posted, I use it to trigger the scroll event if and only if the domains match.


Solution 2:

$('form#ContactForm').bind('submit', function(event){ 
    if ( !validation ) {

        var error ="Please fill out the entire form";
        $('#formErrors').text(error);
        if (window.top != window) {
            $('html,body').animate({
                scrollTop: $("#formErrors").offset().top},
                    'fast');
            }
        }
    } else {
        //execute ajax submission here
    }
}

Post a Comment for "Get Parent Page To Scroll To Top When Iframe's Form Validation Fails"