javascript - Stop returning to executing code -


i have "auto-suggest" input. on keyup in settimeout function ajax request made. if key enter search desired , suggestions should hidden.

the problem is, if type fast enough, when pressing enter "auto-suggest" still shown. guessing second keyup(enter) triggered before first handler has chance stop execution, first search triggered , after "auto-suggest" triggered.

how can prevent program return , execute first handler?

edit

here part of code:

    searchtextinput.bind("keyup.qssb", function(event){       cleartimeout(suggesttimeout);       switch(event.keycode){         case 40: <select option down>; break;         case 38: <select option up>; break         case 13: jquery(widget).trigger("search"); break;         default: <do things>;                  suggesttimeout = settimeout(startsearch, 200); break;       }     }); 

assuming problem described, there 2 things (together) address it:

  1. when send ajax request, store reference request. when receive keyup, cancel ajax request.

  2. when start executing onenter handler, set variable indicate auto-suggestions no longer needed. in auto-suggest handler, after ajax returns, show suggestions if variable not set.

essentially, code structure (note pseudocode , not meant copied application):

var ajaxreq == null; var needsuggestions = true;  $('#textfield').on("keyup", function(e) {     if(ajaxreq != null) {         ajaxreq.abort();         ajaxreq = null;     }      if(key enter) {         needsuggestions = false;         execute search;     }     else {         ajaxreq = $.ajax(...,             done: function() { ajaxreq = null; }             success: function(data) {                 if(needsuggestions) {                     display suggestions;                 }             }         );     } } 

Comments

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -