diff options
author | Michal Čihař <michal@cihar.com> | 2005-11-23 22:10:30 +0300 |
---|---|---|
committer | Michal Čihař <michal@cihar.com> | 2005-11-23 22:10:30 +0300 |
commit | 618f2d7408a14dee3e049b9864c107da6e7c849a (patch) | |
tree | 6df6ffd34223abbe19634443319186d9f2df7960 /js/keyhandler.js | |
parent | 075972b8aca2b914a28106666dbcf1289493885e (diff) |
Move javascript stuff out of libraries folder.
Diffstat (limited to 'js/keyhandler.js')
-rw-r--r-- | js/keyhandler.js | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/js/keyhandler.js b/js/keyhandler.js new file mode 100644 index 0000000000..ab71be9ccd --- /dev/null +++ b/js/keyhandler.js @@ -0,0 +1,59 @@ +/** + * Allows moving around inputs/select by Ctrl+arrows + * + * @param object event data + */ +function onKeyDownArrowsHandler(e) { + e = e||window.event; + var o = (e.srcElement||e.target); + if (!o) return; + if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") return; + if (navigator.userAgent.toLowerCase().indexOf('aplewebkit/') != -1) { + if (e.ctrlKey || e.shiftKey || !e.altKey) return; + } else { + if (!e.ctrlKey || e.shiftKey || e.altKey) return; + } + if (!o.id) return; + + var pos = o.id.split("_"); + if (pos[0] != "field" || typeof pos[2] == "undefined") return; + + var x = pos[2], y=pos[1]; + + // skip non existent fields + for (i=0; i<10; i++) + { + if (switch_movement) { + switch(e.keyCode) { + case 38: x--; break; // up + case 40: x++; break; // down + case 37: y--; break; // left + case 39: y++; break; // right + default: return; + } + } else { + switch(e.keyCode) { + case 38: y--; break; // up + case 40: y++; break; // down + case 37: x--; break; // left + case 39: x++; break; // right + default: return; + } + } + + var id = "field_" + y + "_" + x; + var nO = document.getElementById(id); + if (!nO) { + var id = "field_" + y + "_" + x + "_0"; + var nO = document.getElementById(id); + } + if (nO) break; + } + + if (!nO) return; + nO.focus(); + if (nO.tagName != 'SELECT') { + nO.select(); + } + e.returnValue = false; +} |