diff --git a/js/modal.js b/js/modal.js
index 93891aa4eb26b8fdeb1423c4dafdc3ab2432a99b..4482ea2825716db7ccb9a9a7a531577c7ca7e763 100644
--- a/js/modal.js
+++ b/js/modal.js
@@ -310,7 +310,11 @@
     var $target = $($this.attr('data-target') || (href && href.replace(/.*(?=#[^\s]+$)/, ''))) // strip for ie7
     var option  = $target.data('bs.modal') ? 'toggle' : $.extend({ remote: !/#/.test(href) && href }, $target.data(), $this.data())
 
-    if ($this.is('a')) e.preventDefault()
+    if ($this.is('a')) {
+      if (e.ctrlKey || e.metaKey) return
+
+      e.preventDefault()
+    }
 
     $target.one('show.bs.modal', function (showEvent) {
       if (showEvent.isDefaultPrevented()) return // only register focus restorer if modal will actually get shown