From 53477da315023dddc10f437a70a267c7c22e30ed Mon Sep 17 00:00:00 2001 From: Vaidas Mikalauskas Date: Wed, 4 Nov 2015 10:01:16 +0200 Subject: [PATCH] js-form not in modals --- dist/modal.min.js | 2 +- modal.js | 19 +++++++++++++------ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/dist/modal.min.js b/dist/modal.min.js index 631e25a..d0e12b0 100644 --- a/dist/modal.min.js +++ b/dist/modal.min.js @@ -1 +1 @@ -!function(){function t(){var t='';$("#bsModalContent").length||(t+=''),$("#bsModalConfirmContent").length||(t+=''),$("#bsModalConfirmButtons").length||(t+=''),$("body").append(t)}function o(t){var o=$(this);$(document).trigger("bsmodal.js-modal.clicked",[o]),e($("#bsModalContent")),i(o),c.modal("show"),t.preventDefault()}function d(t){var o=new FormData(this);$(document).trigger("bsmodal.js-form.submitted",[$(this),o]),$.ajax({url:$(this).attr("action"),type:$(this).attr("method"),data:o,processData:!1,contentType:!1,success:function(t,o,d){$(document).trigger("bsmodal.js-form.success",[t,o,d])},complete:function(){$(document).trigger("bsmodal.js-form.completed")}}),t.preventDefault()}function a(t,o,d,a){201==a.status?(c.modal("hide"),o.redirect?window.location=o.redirect:window.location.reload()):s(o)}function n(t){var o=$(this).data("title")||"Delete",d=$(this).data("text")||"Are you sure you want to remove this item?",a=this,n=$("#bsModalConfirmButtons");e($("#bsModalConfirmContent")),l.find("#bsModalTitle").html(o),n.data("append")?(l.find(".modal-body").html(d),l.find(".modal-content").append(n.html())):l.find(".modal-body").html(d+n.html()),c.modal("show"),l.find(".js-confirm-btn").off().on("click",function(){return $(a).data("no-ajax")||$(a).hasClass("js-no-ajax")?window.location.href=$(a).attr("href"):void $.ajax({url:$(a).attr("href"),type:"GET",success:function(){window.location.reload()}})}),t.preventDefault()}function i(t){var o=t.data("url")||t.attr("href");$.get(o,function(t){s(t),$(document).trigger("bsmodal.js-modal.loaded",[t,o])})}function e(t){s(t?t.html():"")}function s(t){var o=$('');l.html(o.append(t))}var l,c;$(document).ready(function(){t(),c=$("#modalHolder"),l=c.find(".modal-dialog"),$(document).on("click",".js-modal",o),$(document).on("submit",".js-form",d),$(document).on("click",".js-confirm",n),$(document).on("bsmodal.js-form.success",a)})}(); \ No newline at end of file +!function(){function t(){var t='';$("#bsModalContent").length||(t+=''),$("#bsModalConfirmContent").length||(t+=''),$("#bsModalConfirmButtons").length||(t+=''),$("body").append(t)}function o(t){var o=$(this);$(document).trigger("bsmodal.js-modal.clicked",[o]),e($("#bsModalContent")),i(o),r.modal("show"),t.preventDefault()}function d(t){var o=$(this),d=new FormData(this);$(document).trigger("bsmodal.js-form.submitted",[$(this),d]),$.ajax({url:o.attr("action"),type:o.attr("method"),data:d,processData:!1,contentType:!1,success:function(t,d,a){$(document).trigger("bsmodal.js-form.success",[t,d,a,o])},complete:function(){$(document).trigger("bsmodal.js-form.completed",[o])}}),t.preventDefault()}function a(t,o,d,a,n){201==a.status?(r.modal("hide"),o.redirect?window.location=o.redirect:window.location.reload()):r.hasClass("in")&&r.find(".js-form")?s(o):n.attr("id")?n.html($(o).find("#"+n.attr("id"))):console.debug(".js-form must have an id attribute or be in modal window")}function n(t){var o=$(this).data("title")||"Delete",d=$(this).data("text")||"Are you sure you want to remove this item?",a=this,n=$("#bsModalConfirmButtons");e($("#bsModalConfirmContent")),l.find("#bsModalTitle").html(o),n.data("append")?(l.find(".modal-body").html(d),l.find(".modal-content").append(n.html())):l.find(".modal-body").html(d+n.html()),r.modal("show"),l.find(".js-confirm-btn").off().on("click",function(){return $(a).data("no-ajax")||$(a).hasClass("js-no-ajax")?window.location.href=$(a).attr("href"):void $.ajax({url:$(a).attr("href"),type:"GET",success:function(){window.location.reload()}})}),t.preventDefault()}function i(t){var o=t.data("url")||t.attr("href");$.get(o,function(t){s(t),$(document).trigger("bsmodal.js-modal.loaded",[t,o])})}function e(t){s(t?t.html():"")}function s(t){var o=$('');l.html(o.append(t))}var l,r;$(document).ready(function(){t(),r=$("#modalHolder"),l=r.find(".modal-dialog"),$(document).on("click",".js-modal",o),$(document).on("submit",".js-form",d),$(document).on("click",".js-confirm",n),$(document).on("bsmodal.js-form.success",a)})}(); \ No newline at end of file diff --git a/modal.js b/modal.js index 7e524aa..7c1f1c0 100644 --- a/modal.js +++ b/modal.js @@ -65,28 +65,29 @@ } function onJsFormSubmit(event) { + var form = $(this); var formData = new FormData(this); $(document).trigger('bsmodal.js-form.submitted', [$(this), formData]); $.ajax({ - url: $(this).attr("action"), - type: $(this).attr("method"), + url: form.attr("action"), + type: form.attr("method"), data: formData, processData: false, contentType: false, success: function(data, status, xhr) { - $(document).trigger('bsmodal.js-form.success', [data, status, xhr]); + $(document).trigger('bsmodal.js-form.success', [data, status, xhr, form]); }, complete: function() { - $(document).trigger('bsmodal.js-form.completed'); + $(document).trigger('bsmodal.js-form.completed', [form]); } }); event.preventDefault(); } - function onJsFormSuccess(event, data, status, xhr) { + function onJsFormSuccess(event, data, status, xhr, form) { if (xhr.status == 201) { modal.modal('hide'); @@ -96,7 +97,13 @@ window.location.reload(); } } else { - displayContent(data); + if (modal.hasClass('in') && modal.find('.js-form')) { + displayContent(data); + } else if (form.attr('id')) { + form.html($(data).find('#' + form.attr('id'))); + } else { + console.debug(".js-form must have an id attribute or be in modal window") + } } }