1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- /**
- * 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);
|