summaryrefslogtreecommitdiff
path: root/bug/bug/jquery.iframe-post-form.js
diff options
context:
space:
mode:
Diffstat (limited to 'bug/bug/jquery.iframe-post-form.js')
-rw-r--r--bug/bug/jquery.iframe-post-form.js92
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