Bug 11563: restore preventing the enter key from submitting several forms
authorFridolin Somers <fridolin.somers@biblibre.com>
Tue, 25 Feb 2014 11:13:13 +0000 (12:13 +0100)
committerGalen Charlton <gmc@esilibrary.com>
Fri, 11 Apr 2014 18:04:06 +0000 (18:04 +0000)
Several forms that take patron or item barcodes as input stopped
preventing the enter key (which is often sent by barcode scanners)
from submitting the form.

The code binding the CSS class noEnterSubmit to the handler preventing
submission when hitting the enter key was no longer triggered.  This is
because this class is added using JavaScript in $(document).ready() and
the keypress event listerning is also set using $(document).ready().

This patch corrects by using JQuery live() with will set event handlers
for HTML generated with JavaScript.

Also sets noEnterSubmit to use the checkEnter(e) function, as that has
broader browser compatibility.  Also corrects a small bug, for IE,
window.event must be used, not event alone.

Test plan :
- Flush browser cache (Crtl+F5) to update js files
- Go to patron creation : members/memberentrygen.tt
- Type a text in all mandatory inputs
- Type some caracters in a non mandatory input
- Press Enter key
=> Without patch : the form is submitted
=> With patch : the form is not submitted
- Try to set several lines in a textarea
=> It works (checks that in this case enter key is allowed)
- Test other pages usign noEnterSubmit class :
cataloguing/additem.tt
course_reserves/course.tt
members/mancredit.tt
members/maninvoice.tt
patron_lists/list.tt

Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Jonathan Druart <jonathan.druart@biblibre.com>
Signed-off-by: Christopher Brannon <cbrannon@cdalibrary.org>
Signed-off-by: Katrin Fischer <Katrin.Fischer.83@web.de>
Works as described, tested in Firefox and Chromium.
Passes tests and QA script.

Signed-off-by: Galen Charlton <gmc@esilibrary.com>
koha-tmpl/intranet-tmpl/prog/en/js/staff-global.js

index 08209fe..a89e273 100644 (file)
@@ -25,8 +25,8 @@ function _(s) { return s; } // dummy function for gettext
         return false;
     });
 
-    $('.noEnterSubmit').keypress(function(e){
-        if ( e.which == 13 ) return false;
+    $('.noEnterSubmit').live("keypress", function(e){
+        return checkEnter(e);
     });
 });
 
@@ -37,7 +37,7 @@ function checkEnter(e){ //e is event object passed from function invocation
                e = e;
                characterCode = e.which; //character code is contained in NN4's which property
        } else {
-               e = event;
+            e = window.event;
                characterCode = e.keyCode; //character code is contained in IE's keyCode property
        }