From 57768d7ea9486f9fcf83701131880405e2fc01cf Mon Sep 17 00:00:00 2001 From: fat <jacobthornton@gmail.com> Date: Wed, 17 Jul 2013 23:01:33 -0700 Subject: [PATCH] fix #7660 --- js/modal.js | 11 ++++++----- js/tests/unit/modal.js | 19 +++++++++++++++++++ 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/js/modal.js b/js/modal.js index 7433de4c8e..43e961baa9 100644 --- a/js/modal.js +++ b/js/modal.js @@ -160,11 +160,12 @@ this.$backdrop = $('<div class="modal-backdrop ' + animate + '" />') .appendTo(document.body) - this.$backdrop.click( - this.options.backdrop == 'static' ? - $.proxy(this.$element[0].focus, this.$element[0]) - : $.proxy(this.hide, this) - ) + this.$element.on('click', $.proxy(function (e) { + if (e.target !== e.currentTarget) return + this.options.backdrop == 'static' + ? this.$element[0].focus.call(this.$element[0]) + : this.hide.call(this) + }, this)) if (doAnimate) this.$backdrop[0].offsetWidth // force reflow diff --git a/js/tests/unit/modal.js b/js/tests/unit/modal.js index 9187b5e23a..90762ea901 100644 --- a/js/tests/unit/modal.js +++ b/js/tests/unit/modal.js @@ -134,4 +134,23 @@ $(function () { }) .modal("show") }) + + test("should close modal when clicking outside of modal-content", function () { + stop() + $.support.transition = false + var div = $("<div id='modal-test'><div class='contents'></div></div>") + div + .bind("shown.bs.modal", function () { + ok($('#modal-test').length, 'modal insterted into dom') + $('.contents').click() + ok($('#modal-test').is(":visible"), 'modal visible') + $('#modal-test').click() + }) + .bind("hidden.bs.modal", function() { + ok(!$('#modal-test').is(":visible"), 'modal hidden') + div.remove() + start() + }) + .modal("show") + }) }) -- GitLab