diff --git a/tailbone/static/js/tailbone.buefy.grid.js b/tailbone/static/js/tailbone.buefy.grid.js
index 17da854d..45f6581d 100644
--- a/tailbone/static/js/tailbone.buefy.grid.js
+++ b/tailbone/static/js/tailbone.buefy.grid.js
@@ -244,16 +244,6 @@ let TailboneGrid = {
             this.$emit('deleteActionClicked', event.target.href)
         },
 
-        deleteResults(event) {
-
-            // submit form if user confirms
-            // TODO: how/where to get/show "plural model title" here?
-            // if (confirm("You are about to delete " + this.total + " ${grid.model_title_plural}.\n\nAre you sure?")) {
-            if (confirm("You are about to delete " + this.total.toLocaleString('en') + " objects.\n\nAre you sure?")) {
-                event.target.form.submit()
-            }
-        },
-
         checkedRowUUIDs() {
             let uuids = []
             for (let row of this.$data.checkedRows) {
diff --git a/tailbone/templates/master/index.mako b/tailbone/templates/master/index.mako
index 6889ac44..cd785bad 100644
--- a/tailbone/templates/master/index.mako
+++ b/tailbone/templates/master/index.mako
@@ -233,21 +233,24 @@
 
   ## delete search results
   % if master.bulk_deletable and request.has_perm('{}.bulk_delete'.format(permission_prefix)):
-      ${h.form(url('{}.bulk_delete'.format(route_prefix)), name='bulk-delete', class_='control')}
-      ${h.csrf_token(request)}
       % if use_buefy:
+          ${h.form(url('{}.bulk_delete'.format(route_prefix)), ref='delete_results_form', class_='control')}
+          ${h.csrf_token(request)}
           
-            Delete Results
+            {{ deleteResultsText }}
           
+          ${h.end_form()}
       % else:
+          ${h.form(url('{}.bulk_delete'.format(route_prefix)), name='bulk-delete', class_='control')}
+          ${h.csrf_token(request)}
           
+          ${h.end_form()}
       % endif
-      ${h.end_form()}
   % endif
 
 %def>
@@ -396,6 +399,34 @@
         }
     % endif
 
+    % if master.bulk_deletable and master.has_perm('bulk_delete'):
+
+        TailboneGridData.deleteResultsSubmitting = false
+        TailboneGridData.deleteResultsText = "Delete Results"
+
+        TailboneGrid.computed.deleteResultsDisabled = function() {
+            if (this.deleteResultsSubmitting) {
+                return true
+            }
+            if (!this.total) {
+                return true
+            }
+            return false
+        }
+
+        TailboneGrid.methods.deleteResultsSubmit = function() {
+            // TODO: show "plural model title" here?
+            if (!confirm("You are about to delete " + this.total.toLocaleString('en') + " objects.\n\nAre you sure?")) {
+                return
+            }
+
+            this.deleteResultsSubmitting = true
+            this.deleteResultsText = "Working, please wait..."
+            this.$refs.delete_results_form.submit()
+        }
+
+    % endif
+
     % if master.mergeable and master.has_perm('merge'):
 
         TailboneGridData.mergeFormButtonText = "Merge 2 ${model_title_plural}"