diff options
author | J.M <me@mynetx.net> | 2013-04-28 22:05:35 +0400 |
---|---|---|
committer | J.M <me@mynetx.net> | 2013-04-28 22:05:35 +0400 |
commit | 0b63f7e6c811282e2651d7b5be4400ebc4c84fe7 (patch) | |
tree | 18e460f666b8bfe7029f0c0deca49c85d6339e92 /js/keyhandler.js | |
parent | 32ccd01b64af7e4d951b480beda5a6891b3aece8 (diff) |
Fix bug #3799 [interface] Incorrect select field change on ctrl key navigation in Firefox
Diffstat (limited to 'js/keyhandler.js')
-rw-r--r-- | js/keyhandler.js | 26 |
1 files changed, 19 insertions, 7 deletions
diff --git a/js/keyhandler.js b/js/keyhandler.js index 8f9ccec527..6b9933d427 100644 --- a/js/keyhandler.js +++ b/js/keyhandler.js @@ -6,19 +6,19 @@ */ AJAX.registerTeardown('keyhandler.js', function() { - $('#table_columns').die('keydown'); - $('table.insertRowTable').die('keydown'); + $('#table_columns').die('keydown keyup'); + $('table.insertRowTable').die('keydown keyup'); }); AJAX.registerOnload('keyhandler.js', function() { - $('#table_columns').live('keydown', function(event) { + $('#table_columns').live('keydown keyup', function(event) { onKeyDownArrowsHandler(event.originalEvent); }); - $('table.insertRowTable').live('keydown', function(event) { + $('table.insertRowTable').live('keydown keyup', function(event) { onKeyDownArrowsHandler(event.originalEvent); }); }); - +console.log("cd"); function onKeyDownArrowsHandler(e) { e = e||window.event; @@ -28,7 +28,7 @@ function onKeyDownArrowsHandler(e) } if (o.tagName != "TEXTAREA" && o.tagName != "INPUT" && o.tagName != "SELECT") { return; - } + }console.log(e); if (navigator.userAgent.toLowerCase().indexOf('applewebkit/') != -1) { if (e.ctrlKey || e.shiftKey || !e.altKey) { return; @@ -72,6 +72,13 @@ function onKeyDownArrowsHandler(e) return; } + var is_firefox = navigator.userAgent.toLowerCase().indexOf("firefox/") > -1; + + // restore selected index, bug #3799 + if (is_firefox && e.type == "keyup") { + o.selectedIndex = window["selectedIndex_" + o.id]; + } + var id = "field_" + y + "_" + x; nO = document.getElementById(id); if (! nO) { @@ -83,7 +90,12 @@ function onKeyDownArrowsHandler(e) if (! nO) { return; } - nO.focus(); + if (e.type == "keydown") { + nO.focus(); + if (is_firefox) { + window["selectedIndex_" + nO.id] = nO.selectedIndex; + } + } if (nO.tagName != 'SELECT') { nO.select(); } |