/** * jQuery plugin for posting form including file inputs. * * Copyright (c) 2010 - 2011 Ewen Elder * * Licensed under the MIT and GPL licenses: * http://www.opensource.org/licenses/mit-license.php * http://www.gnu.org/licenses/gpl.html * * @author: Ewen Elder <ewen at jainaewen dot com> <glomainn at yahoo dot co dot uk> * @version: 1.1.1 (2011-07-29) **/ (function ($) { $.fn.iframePostForm = function (options) { var response, returnReponse, element, status = true, iframe; options = $.extend({}, $.fn.iframePostForm.defaults, options); // Add the iframe. if (!$('#' + options.iframeID).length) { $('body').append('<iframe id="' + options.iframeID + '" name="' + options.iframeID + '" style="display:none" />'); } return $(this).each(function () { element = $(this); // Target the iframe. element.attr('target', options.iframeID); // Submit listener. element.submit(function () { // If status is false then abort. status = options.post.apply(this); if (status === false) { return status; } iframe = $('#' + options.iframeID).load(function () { response = iframe.contents().find('body'); if (options.json) { returnReponse = $.parseJSON(response.text()); } else { returnReponse = response.html(); } options.complete.apply(this, [returnReponse]); iframe.unbind('load'); setTimeout(function () { response.html(''); }, 1); }); }); }); }; $.fn.iframePostForm.defaults = { iframeID : 'iframe-post-form', // Iframe ID. json : false, // Parse server response as a json object. post : function () {}, // Form onsubmit. complete : function (response) {} // After response from the server has been received. }; })(jQuery);