diff options
Diffstat (limited to 'bug/bug/jquery.iframe-post-form.js')
-rw-r--r-- | bug/bug/jquery.iframe-post-form.js | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/bug/bug/jquery.iframe-post-form.js b/bug/bug/jquery.iframe-post-form.js new file mode 100644 index 0000000..3ce755c --- /dev/null +++ b/bug/bug/jquery.iframe-post-form.js @@ -0,0 +1,92 @@ +/** + * 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.html()); + } + + 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);
\ No newline at end of file |