diff --git a/module/VuFind/src/VuFind/Controller/MyResearchController.php b/module/VuFind/src/VuFind/Controller/MyResearchController.php
index d43c25b284e34c32750cb7edb26fc876f2452cd2..b1bf34640a91b1415fd92bff107abdc847d57422 100644
--- a/module/VuFind/src/VuFind/Controller/MyResearchController.php
+++ b/module/VuFind/src/VuFind/Controller/MyResearchController.php
@@ -390,6 +390,7 @@ class MyResearchController extends AbstractBase
 
     /**
      * Add account blocks to the flash messenger as errors.
+     * These messages are lightbox ignored.
      *
      * @param \VuFind\ILS\Connection $catalog Catalog connection
      * @param array                  $patron  Patron details
@@ -402,7 +403,10 @@ class MyResearchController extends AbstractBase
             && $blocks = $catalog->getAccountBlocks($patron)
         ) {
             foreach ($blocks as $block) {
-                $this->flashMessenger()->addMessage($block, 'error');
+                $this->flashMessenger()->addMessage(
+                    [ 'msg' => $block, 'dataset' => [ 'lightbox-ignore' => '1' ] ],
+                    'error'
+                );
             }
         }
     }
diff --git a/module/VuFind/src/VuFind/View/Helper/Root/Flashmessages.php b/module/VuFind/src/VuFind/View/Helper/Root/Flashmessages.php
index ac7ec7a7366253cbd8a5e80deb71f21e339c77a5..26703238acc071d6f25f4b4cf12ddf74279bfbe4 100644
--- a/module/VuFind/src/VuFind/View/Helper/Root/Flashmessages.php
+++ b/module/VuFind/src/VuFind/View/Helper/Root/Flashmessages.php
@@ -82,7 +82,14 @@ class Flashmessages extends AbstractHelper
                 $this->fm->getMessages($ns), $this->fm->getCurrentMessages($ns)
             );
             foreach (array_unique($messages, SORT_REGULAR) as $msg) {
-                $html .= '<div class="' . $this->getClassForNamespace($ns) . '">';
+                $html .= '<div class="' . $this->getClassForNamespace($ns) . '"';
+                if (isset($msg['dataset'])) {
+                    foreach ($msg['dataset'] as $attr => $value) {
+                        $html .= ' data-' . $attr . '="'
+                            . htmlspecialchars($value) . '"';
+                    }
+                }
+                $html .= '>';
                 // Advanced form:
                 if (is_array($msg)) {
                     // Use a different translate helper depending on whether
diff --git a/themes/bootstrap3/js/lightbox.js b/themes/bootstrap3/js/lightbox.js
index a1e11f4b65adbb482f3fd05bc5e8f2d3933cd0e8..f15a1a972b661be846c72906d3ace9cc038e94c2 100644
--- a/themes/bootstrap3/js/lightbox.js
+++ b/themes/bootstrap3/js/lightbox.js
@@ -71,9 +71,12 @@ VuFind.register('lightbox', function Lightbox() {
     }
     // Isolate successes
     var htmlDiv = $('<div/>').html(content);
-    var alerts = htmlDiv.find('.flash-message.alert-success');
+    var alerts = htmlDiv.find('.flash-message.alert-success:not([data-lightbox-ignore])');
     if (alerts.length > 0) {
-      showAlert(alerts[0].innerHTML, 'success');
+      var msgs = alerts.toArray().map(function getSuccessHtml(el) {
+        return el.innerHTML;
+      }).join('<br/>');
+      showAlert(msgs, 'success');
       return;
     }
     // Deframe HTML
@@ -131,21 +134,25 @@ VuFind.register('lightbox', function Lightbox() {
           VuFind.refreshPage();
           return;
         }
+        var testDiv = $('<div/>').html(content);
+        var errorMsgs = testDiv.find('.flash-message.alert-danger:not([data-lightbox-ignore])');
         // Place Hold error isolation
-        if (obj.url.match(/\/Record/) && (obj.url.match(/Hold\?/) || obj.url.match(/Request\?/))) {
-          var testDiv = $('<div/>').html(content);
-          var error = testDiv.find('.flash-message.alert-danger');
-          if (error.length && testDiv.find('.record').length) {
-            showAlert(error[0].innerHTML, 'danger');
+        if (obj.url.match(/\/Record\/.*(Hold|Request)\?/)) {
+          if (errorMsgs.length && testDiv.find('.record').length) {
+            var msgs = errorMsgs.toArray().map(function getAlertHtml(el) {
+              return el.innerHTML;
+            }).join('<br/>');
+            showAlert(msgs, 'danger');
             return false;
           }
         }
         if ( // Close the lightbox after deliberate login
-          obj.method                                                                 // is a form
-          && ((obj.url.match(/MyResearch/) && !obj.url.match(/Bulk/) && !obj.url.match(/Delete/) && !obj.url.match(/Recover/)) // that matches login/create account
-            || obj.url.match(/catalogLogin/))                                        // or catalog login for holds
-          && $('<div/>').html(content).find('.flash-message.alert-danger').length === 0 // skip failed logins
+          obj.method && (                                            // is a form
+            obj.url.match(/catalogLogin/)                            // catalog login for holds
+            || obj.url.match(/MyResearch\/(?!Bulk|Delete|Recover)/)  // or that matches login/create account
+          ) && errorMsgs.length === 0                                // skip failed logins
         ) {
+
           var eventResult = _emit('VuFind.lightbox.login', {
             originalUrl: _originalUrl,
             formUrl: obj.url