diff --git a/themes/bootstrap3/js/common.js b/themes/bootstrap3/js/common.js
index 13d1670801aeff905c398027e4b420f1c880990b..3ab48e620494ccc57962867d4841af81c7d1076c 100644
--- a/themes/bootstrap3/js/common.js
+++ b/themes/bootstrap3/js/common.js
@@ -166,7 +166,7 @@ function recaptchaOnLoad() {
   if (typeof grecaptcha !== 'undefined') {
     var captchas = $('.g-recaptcha:empty');
     for (var i = 0; i < captchas.length; i++) {
-      captchas[i].dataset.captchaId = grecaptcha.render(captchas[i], captchas[i].dataset);
+      $(captchas[i]).data('captchaId', grecaptcha.render(captchas[i], $(captchas[i]).data()));
     }
   }
 }
@@ -321,6 +321,16 @@ function setupFacets() {
   $('.facet.list-group .collapse').on('hidden.bs.collapse', facetSessionStorage);
 }
 
+function setupIeSupport() {
+  // Disable Bootstrap modal focus enforce on IE since it breaks Recaptcha.
+  // Cannot use conditional comments since IE 11 doesn't support them but still has
+  // the issue
+  var ua = window.navigator.userAgent;
+  if (ua.indexOf('MSIE') || ua.indexOf('Trident/')) {
+    $.fn.modal.Constructor.prototype.enforceFocus = function emptyEnforceFocus() { };
+  }
+}
+
 $(document).ready(function commonDocReady() {
   // Start up all of our submodules
   VuFind.init();
@@ -382,4 +392,6 @@ $(document).ready(function commonDocReady() {
     $('.searchFormKeepFilters').prop('checked', state);
     $('.applied-filter').prop('checked', state);
   }
+
+  setupIeSupport();
 });
diff --git a/themes/bootstrap3/js/facets.js b/themes/bootstrap3/js/facets.js
index d9629e488ccb930ff8af0858807a6f399b4bffd5..649890d761bbaf8b1a78062540192f286a4d1e78 100644
--- a/themes/bootstrap3/js/facets.js
+++ b/themes/bootstrap3/js/facets.js
@@ -104,7 +104,7 @@ VuFind.register('lightbox_facets', function LightboxFacets() {
   function lightboxFacetSorting() {
     var sortButtons = $('.js-facet-sort');
     function sortAjax(button) {
-      var sort = button.dataset.sort;
+      var sort = $(button).data('sort');
       var list = $('#facet-list-' + sort);
       if (list.find('.js-facet-item').length === 0) {
         list.find('.js-facet-next-page').text(VuFind.translate('loading') + '...');
@@ -129,7 +129,7 @@ VuFind.register('lightbox_facets', function LightboxFacets() {
     lightboxFacetSorting();
     $('.js-facet-next-page').click(function facetLightboxMore() {
       var button = $(this);
-      var page = parseInt(this.dataset.page, 10);
+      var page = parseInt(button.data('page'), 10);
       if (button.attr('disabled')) {
         return false;
       }