LP#1029601: Prevent double-clicking when submitting hold requests.
authorDaniel Pearl <dpearl@cwmars.org>
Wed, 12 Dec 2018 17:51:07 +0000 (12:51 -0500)
committerChris Sharp <csharp@georgialibraries.org>
Mon, 17 Jun 2019 21:13:53 +0000 (17:13 -0400)
Double clicking on hold submit buttons causes multiple holds to be generated.  This adds some code to
disable the Submit button(s) after the first click, so subsequent clicks don't "work" in unintended ways.

Signed-off-by: Dan Pearl <dpearl@cwmars.org>
Signed-off-by: Jeff Davis <jdavis@sitka.bclibraries.ca>
Open-ILS/src/templates/opac/parts/place_hold_result.tt2
Open-ILS/web/js/ui/default/opac/holds-validation.js

index b97f03e..59bc6fb 100644 (file)
@@ -6,13 +6,21 @@
 
 <!-- TODO: CSS for big/strong-->
 
+<script>
+function disable_submit() {
+   var submit_element = document.getElementById("place_hold_submit");
+   submit_element.disabled = true;
+   return true;
+};
+</script>
+
 <div id='holds_box' class='canvas' style='margin-top: 6px;'>
     <div class="header_middle">
        <span class="float-left">[% l('Result of Placing Hold:') %]</span>
     </div>
 
 
-    <form method="post">
+    <form method="post" onsubmit="return disable_submit();">
         <input type="hidden" name="override" value="1" />
         [% FOR k IN ctx.orig_params.keys %]
         <input type="hidden" name="[% k %]" value="[% ctx.orig_params.$k | html %]" />
@@ -88,7 +96,7 @@
                                 );
                             </script>
                         [% END %]
-
+                        
                         [% ELSIF hdata.hold_failed; any_failures = 1 %]
 
                             <div style="padding:10px;font-weight:bold;color:red;font-size:1em;">[% l("Hold could not be placed."); %]</div>
                 [% |l %]You have permission to override some of the failed holds. Click Submit to override and place your hold on the selected items.[% END %]
             </div>
             <span style='padding-right: 10px;'>
-                <input type="submit" name="submit" value="[% l('Submit') %]"
+                <input id="place_hold_submit" type="submit" name="submit" value="[% l('Submit') %]"
                     title="[% l('Submit') %]" alt="[% l('Submit') %]"
                     class="opac-button" />
             </span>
index c0cad6c..773a756 100644 (file)
@@ -89,7 +89,12 @@ function validateHoldForm() {
                 return false;
             }
         }
-        return confirmMultipleHolds();
+        var result = confirmMultipleHolds();
+        if (result) {
+           var submit_element = document.getElementById("place_hold_submit");
+            submit_element.disabled = true;
+        }
+        return result;
     } else {
         alert(eg_opac_i18n.EG_MISSING_REQUIRED_INPUT);
         res.culpritNames.forEach(function(n){