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