diff --git a/ChangeLog b/ChangeLog index a8c25c732..21261c250 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,14 @@ +2010-03-09 Wolfgang Sourdeau + + * UI/WebServerResources/UIxContactsUserFolders.js + (onFolderSearchKeyDown): same as below. + + * UI/WebServerResources/generic.js (IsCharacterKey): new helper + function that returns whether the pressed keycode is one that + changes the content of input fields. + (onSearchKeyDown): simplified method by making use of the new + function above. + 2010-03-08 Wolfgang Sourdeau * UI/WebServerResources/generic.js (onSearchKeyDown): set the diff --git a/UI/WebServerResources/UIxContactsUserFolders.js b/UI/WebServerResources/UIxContactsUserFolders.js index c7958844a..df897fb91 100644 --- a/UI/WebServerResources/UIxContactsUserFolders.js +++ b/UI/WebServerResources/UIxContactsUserFolders.js @@ -231,22 +231,20 @@ function onConfirmFolderSelection(event) { } function onFolderSearchKeyDown(event) { - if (event.ctrlKey - || event.metaKey - || event.keyCode == Event.KEY_TAB) - return; - - var div = $("folders"); + if (event.keyCode == Event.KEY_BACKSPACE + || IsCharacterKey(event.keyCode)) { + var div = $("folders"); - if (!div.clean) { - var oldD = $("d"); // the folders tree - if (oldD) { - oldD.remove(); - delete d; - } - div.clean = true; - $("addButton").addClassName("disabled"); - } + if (!div.clean) { + var oldD = $("d"); // the folders tree + if (oldD) { + oldD.remove(); + delete d; + } + div.clean = true; + $("addButton").addClassName("disabled"); + } + } } function initUserFoldersWindow() { diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index dbdf6f3f6..a68761533 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -916,23 +916,28 @@ function onSearchBlur(event) { } } -function onSearchKeyDown(event) { - if (event.keyCode == Event.KEY_TAB - || event.ctrlKey - || event.metaKey) - return false; - - if (this.timer) - clearTimeout(this.timer); +function IsCharacterKey(keyCode) { + return (keyCode == 32 /* space */ + || (keyCode > 47 && keyCode < 58) /* digits */ + || (keyCode > 64 && keyCode < 91) /* letters */ + || (keyCode > 95 && keyCode < 112) /* numpad digits */ + || (keyCode > 186 && keyCode < 193) + || (keyCode > 218 && keyCode < 223)) +} +function onSearchKeyDown(event) { if (event.keyCode == Event.KEY_RETURN) { + if (this.timer) + clearTimeout(this.timer); onSearchFormSubmit(); preventDefault(event); } - else if (event.keyCode == 0 - || event.keyCode == Event.KEY_BACKSPACE - || event.keyCode > 31) + else if (event.keyCode == Event.KEY_BACKSPACE + || IsCharacterKey(event.keyCode)) { + if (this.timer) + clearTimeout(this.timer); this.timer = setTimeout("onSearchFormSubmit()", 500); + } } function onSearchFormSubmit(event) {