[kupu-checkins] r51113 - kupu/trunk/kupu/plone/kupu_plone_layer

duncan at codespeak.net duncan at codespeak.net
Tue Jan 29 17:12:10 CET 2008


Author: duncan
Date: Tue Jan 29 17:12:09 2008
New Revision: 51113

Modified:
   kupu/trunk/kupu/plone/kupu_plone_layer/kupuploneinit.js
Log:
Fix tab key which wasn't taking you out of kupu to next/previous field. However, plone ticket #7727 might result in tab behaviour 
changing again.


Modified: kupu/trunk/kupu/plone/kupu_plone_layer/kupuploneinit.js
==============================================================================
--- kupu/trunk/kupu/plone/kupu_plone_layer/kupuploneinit.js	(original)
+++ kupu/trunk/kupu/plone/kupu_plone_layer/kupuploneinit.js	Tue Jan 29 17:12:09 2008
@@ -289,24 +289,35 @@
     function tabHandler(event) {
         event = event||window.event;
         if (event.keyCode!=9) { return; }
+        console.log("tab!");
         if (!(/kupu-fulleditor-zoomed/.test(document.body.className))) {
             var form = textarea.form;
             var els = form.elements;
-            var target, targindex;
-            var mytabindex = iframe.tabIndex;
-            for (var i = 0; i < els.length; i++) {
-                var el = els[i];
-                if (el.tabIndex && el.tabIndex > mytabindex && !el.disabled && el.offsetWidth && el.offsetHeight) {
-                    if (!targindex || el.tabIndex < targindex) {
+            var target;
+            if (event.shiftKey) { // shift-tab goes backwards.
+                for (var i = 0; i < els.length; i++) {
+                    var el = els[i];
+                    if (!el.disabled && el.offsetWidth && el.offsetHeight) {
                         target = el;
-                        targindex = el.tabIndex;
+                    }
+                    if (els[i]===textarea) break;
+                }
+            } else { // tab forwards
+                for (var i = 0; i < els.length; i++) {
+                    if (els[i]===textarea) break;
+                }
+                for (;i < els.length; i++) {
+                    var el = els[i];
+                    if (!el.disabled && el.offsetWidth && el.offsetHeight) {
+                        target = el;
+                        break;
                     }
                 }
             }
             if (target) {
                 window.focus();
                 target.focus();
-            }
+            } else { return; };
         }
         if (event.preventDefault) { event.preventDefault(); event.stopPropagation();}
         event.returnValue = false;


More information about the kupu-checkins mailing list