From dbc854d8b8cb0a187859fae174a41de5b296595c Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Thu, 3 Apr 2014 18:46:16 +0200 Subject: [PATCH] Fire up server request only on typing printed or modifying characters and when the string actually changed --- settings/js/users/filter.js | 36 ++++++++++++++++++++++++++++-------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/settings/js/users/filter.js b/settings/js/users/filter.js index 493ce991732..2c0eefe25d4 100644 --- a/settings/js/users/filter.js +++ b/settings/js/users/filter.js @@ -14,6 +14,7 @@ function UserManagementFilter(filterInput, userList) { this.filterInput = filterInput; this.userList = userList; this.thread = undefined; + this.oldval = this.filterInput.val(); this.init(); } @@ -23,14 +24,33 @@ function UserManagementFilter(filterInput, userList) { */ UserManagementFilter.prototype.init = function() { umf = this; - this.filterInput.keyup(function() { - clearTimeout(umf.thread); - umf.thread = setTimeout( - function() { - umf.run(); - }, - 300 - ); + this.filterInput.keyup(function(e) { + console.log(e.keyCode); + + //we want to react on any printable letter, plus on modyfing stuff like + //Backspace and Delete. extended https://stackoverflow.com/a/12467610 + var valid = + e.keyCode === 0 || e.keyCode === 8 || // like ö or ж; backspace + e.keyCode === 9 || e.keyCode === 46 || // tab; delete + e.keyCode === 32 || // space + (e.keyCode > 47 && e.keyCode < 58) || // number keys + (e.keyCode > 64 && e.keyCode < 91) || // letter keys + (e.keyCode > 95 && e.keyCode < 112) || // numpad keys + (e.keyCode > 185 && e.keyCode < 193) || // ;=,-./` (in order) + (e.keyCode > 218 && e.keyCode < 223); // [\]' (in order) + + //besides the keys, the value must have been changed compared to last + //time + if(valid && umf.oldVal !== umf.getPattern()) { + clearTimeout(umf.thread); + umf.thread = setTimeout( + function() { + umf.run(); + }, + 300 + ); + } + umf.oldVal = umf.getPattern(); }); } -- 2.39.5