From 4b395d8b5164a967f404bcf0bdd52d5ac5806769 Mon Sep 17 00:00:00 2001 From: nb Date: Fri, 3 Nov 2017 18:30:03 +0000 Subject: [PATCH 1/4] Changed keydown to keyup Change of keydown event handler to a keyup event handler due to issues with mobile Safari not displaying the suggestion list loaded from AJAX request. Cause being the keydown event fires before the character is entered into the input and so the AJAX response query differs from the input term when processing the AJAX response. --- src/jquery.tokeninput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jquery.tokeninput.js b/src/jquery.tokeninput.js index 4b69d823..265bb826 100755 --- a/src/jquery.tokeninput.js +++ b/src/jquery.tokeninput.js @@ -273,7 +273,7 @@ token_list.removeClass($(input).data("settings").classes.focused); }) .bind("keyup keydown blur update", resize_input) - .keydown(function (event) { + .keyup(function (event) { var previous_token; var next_token; From 241d1cf8014dc48dbc99b8d2e75dc983fbc20bf2 Mon Sep 17 00:00:00 2001 From: nb Date: Fri, 3 Nov 2017 18:34:54 +0000 Subject: [PATCH 2/4] Mobile Safari set focus issue Mobile Safari stops focus being set when outside a user event, hence when set from inside the setTimeout function, it fails to set the focus --- src/jquery.tokeninput.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/jquery.tokeninput.js b/src/jquery.tokeninput.js index 265bb826..6529be8b 100755 --- a/src/jquery.tokeninput.js +++ b/src/jquery.tokeninput.js @@ -1067,11 +1067,12 @@ // obj: a jQuery object to focus() function focusWithTimeout(object) { setTimeout( - function() { - object.focus(); - }, - 50 - ); + function() { + object.focus(); + }, + 50 + ); + object.focus(); } }; From db14b785141cd3f3daace8ce6b8603e0ca3f5831 Mon Sep 17 00:00:00 2001 From: nb Date: Mon, 6 Nov 2017 12:18:32 +0000 Subject: [PATCH 3/4] Update jquery.tokeninput.js --- src/jquery.tokeninput.js | 48 ++++++++++++++++++++++------------------ 1 file changed, 27 insertions(+), 21 deletions(-) diff --git a/src/jquery.tokeninput.js b/src/jquery.tokeninput.js index 6529be8b..585a4d88 100755 --- a/src/jquery.tokeninput.js +++ b/src/jquery.tokeninput.js @@ -273,7 +273,7 @@ token_list.removeClass($(input).data("settings").classes.focused); }) .bind("keyup keydown blur update", resize_input) - .keyup(function (event) { + .keydown(function (event) { var previous_token; var next_token; @@ -323,26 +323,6 @@ break; - case KEY.BACKSPACE: - previous_token = input_token.prev(); - - if (this.value.length === 0) { - if (selected_token) { - delete_token($(selected_token)); - hiddenInput.change(); - } else if(previous_token.length) { - select_token($(previous_token.get(0))); - } - - return false; - } else if($(this).val().length === 1) { - hide_dropdown(); - } else { - // set a timeout just long enough to let this function finish. - setTimeout(function(){ do_search(); }, 5); - } - break; - case KEY.TAB: case KEY.ENTER: case KEY.NUMPAD_ENTER: @@ -371,6 +351,32 @@ case KEY.ESCAPE: hide_dropdown(); return true; + } + }); + .keyup(function (event) { + var previous_token; + var next_token; + + switch(event.keyCode) { + case KEY.BACKSPACE: + previous_token = input_token.prev(); + + if (this.value.length === 0) { + if (selected_token) { + delete_token($(selected_token)); + hiddenInput.change(); + } else if(previous_token.length) { + select_token($(previous_token.get(0))); + } + + return false; + } else if($(this).val().length === 1) { + hide_dropdown(); + } else { + // set a timeout just long enough to let this function finish. + setTimeout(function(){ do_search(); }, 5); + } + break; default: if (String.fromCharCode(event.which)) { From 298e2a0411f638a5545218e93915a69d70c4bee6 Mon Sep 17 00:00:00 2001 From: nb Date: Mon, 6 Nov 2017 12:26:24 +0000 Subject: [PATCH 4/4] Remove semi-colon between keyup and keydown event handlers --- src/jquery.tokeninput.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/jquery.tokeninput.js b/src/jquery.tokeninput.js index 585a4d88..757ef199 100755 --- a/src/jquery.tokeninput.js +++ b/src/jquery.tokeninput.js @@ -352,7 +352,7 @@ hide_dropdown(); return true; } - }); + }) .keyup(function (event) { var previous_token; var next_token;