diff --git a/app/assets/javascripts/sitewide/print_progress_modal.js b/app/assets/javascripts/sitewide/print_progress_modal.js
index 217b35d41..68e972d94 100644
--- a/app/assets/javascripts/sitewide/print_progress_modal.js
+++ b/app/assets/javascripts/sitewide/print_progress_modal.js
@@ -1,32 +1,33 @@
-function updateProgressModal() {
-  var status;
-  var modal = $(document).find('.label-printing-progress-modal');
+(function() {
+  function updateProgressModal() {
+    var modal = $('.label-printing-progress-modal');
 
-  if (modal.length === 0) {
-    return;
-  }
+    if (modal.length === 0) return;
 
-  $.getJSON(
-    `/label_printers/${modal.data('labelPrinterId')}/update_progress_modal`
-    + `?starting_item_count=${modal.data('startingItemCount')}`,
-    function(data) {
-      modal.replaceWith(data.html);
-
-      status = modal.data('label-printer-status');
-      if (status !== 'done' && status !== 'error') {
-        setTimeout(updateProgressModal, 3000);
+    $.getJSON(
+      modal.data('progress-url'), function(data) {
+        modal.replaceWith(data.html);
+        let status = modal.data('label-printer-status');
+        if (!['done', 'error'].includes(status)) {
+          setTimeout(updateProgressModal, 3000);
+        }
       }
-    }
-  );
-}
-
-$(document).on('click', '.label-printing-progress-modal .close', function() {
-  $(this).closest('.label-printing-progress-modal').remove();
-});
-
-$(document).on('turbolinks:load', function() {
-  var modal = $(document).find('.label-printing-progress-modal');
-  if (modal.length > 0) {
-    updateProgressModal();
+    );
   }
-});
+
+  $(document).on('click', '.label-printing-progress-modal .close', function() {
+    $(this).closest('.label-printing-progress-modal').remove();
+  });
+
+  $(document).on('ajax:success', '.print-label-form', function(e, data) {
+    var modal = $('.label-printing-progress-modal');
+    if (modal.length) {
+      modal.replaceWith(data.html);
+    } else {
+      $('body').append($(data.html));
+    }
+
+    updateProgressModal();
+    $('#modal-print-repository-row-label').modal('hide');
+  });
+}());
diff --git a/app/controllers/repository_rows_controller.rb b/app/controllers/repository_rows_controller.rb
index 5d727bdf4..bfa721807 100644
--- a/app/controllers/repository_rows_controller.rb
+++ b/app/controllers/repository_rows_controller.rb
@@ -109,7 +109,13 @@ class RepositoryRowsController < ApplicationController
 
     label_printer.update!(current_print_job_ids: job_ids * params[:copies].to_i)
 
-    redirect_to repository_path(@repository)
+    render json: {
+      html: render_to_string(
+        partial: 'label_printers/print_progress_modal.html.erb',
+        locals: { starting_item_count: label_printer.current_print_job_ids.length,
+                  label_printer: label_printer }
+      )
+    }
   end
 
   def update
diff --git a/app/views/label_printers/_print_progress_modal.html.erb b/app/views/label_printers/_print_progress_modal.html.erb
index c5f1656f1..0f9b7c54f 100644
--- a/app/views/label_printers/_print_progress_modal.html.erb
+++ b/app/views/label_printers/_print_progress_modal.html.erb
@@ -1,4 +1,7 @@
-<div class="label-printing-progress-modal" data-label-printer-status="<%= label_printer.printing_status %>" data-label-printer-id="<%= label_printer.id %>" data-starting-item-count="<%= starting_item_count %>">
+<div class="label-printing-progress-modal"
+     data-label-printer-status="<%= label_printer.printing_status %>" data-label-printer-id="<%= label_printer.id %>"
+     data-starting-item-count="<%= starting_item_count %>"
+     data-progress-url="<%= update_progress_modal_label_printer_path(label_printer, starting_item_count: starting_item_count) %>">
   <div class="modal-header">
     <div class="title">
       <%= label_printer.name %>
diff --git a/app/views/repositories/_print_label_modal.html.erb b/app/views/repositories/_print_label_modal.html.erb
index 516a79e1b..755080046 100644
--- a/app/views/repositories/_print_label_modal.html.erb
+++ b/app/views/repositories/_print_label_modal.html.erb
@@ -2,7 +2,7 @@
   <div class="modal-dialog" role="document">
     <div class="modal-content">
       <% if @printers.size > 0 %>
-        <%= form_tag print_repository_repository_rows_path do %>
+        <%= form_tag print_repository_repository_rows_path, { class: 'print-label-form', data: { remote: true } } do %>
           <div class="modal-header">
             <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
             <h4 class="modal-title">
diff --git a/app/views/repositories/show.html.erb b/app/views/repositories/show.html.erb
index 6505ebbe8..d65034f59 100644
--- a/app/views/repositories/show.html.erb
+++ b/app/views/repositories/show.html.erb
@@ -159,11 +159,6 @@
 <%= render partial: 'repositories/import_repository_records_modal',
                     locals: { repository: @repository } %>
 
-<% if @busy_printer %>
-  <%= render(
-    partial: 'label_printers/print_progress_modal',
-    locals: { starting_item_count: @busy_printer.current_print_job_ids.length, label_printer: @busy_printer }) %>
-<% end %>
 
 <%= render partial: "repositories/delete_record_modal" %>
 <%= render partial: 'repositories/export_repository_modal',