From 46376958940fa7823c2e5ef4fb15b87c7d2f47db Mon Sep 17 00:00:00 2001 From: Scott González Date: Fri, 19 Nov 2010 16:17:52 -0500 Subject: Autocomplete multiple demos: Don't leave the field when tabbing while the menu is open. Fixes #6661 - Autocomplete: Tab on multiple Autocomplete should not change focus after selecting. --- demos/autocomplete/multiple-remote.html | 62 +++++++++++++++++++-------------- 1 file changed, 35 insertions(+), 27 deletions(-) (limited to 'demos/autocomplete/multiple-remote.html') diff --git a/demos/autocomplete/multiple-remote.html b/demos/autocomplete/multiple-remote.html index cfbf56fe1..9494da98a 100644 --- a/demos/autocomplete/multiple-remote.html +++ b/demos/autocomplete/multiple-remote.html @@ -22,35 +22,43 @@ return split( term ).pop(); } - $( "#birds" ).autocomplete({ - source: function( request, response ) { - $.getJSON( "search.php", { - term: extractLast( request.term ) - }, response ); - }, - search: function() { - // custom minLength - var term = extractLast( this.value ); - if ( term.length < 2 ) { + $( "#birds" ) + // don't navigate away from the field on tab when selecting an item + .bind( "keydown", function( event ) { + if ( event.keyCode === $.ui.keyCode.TAB && + $( this ).data( "autocomplete" ).menu.active ) { + event.preventDefault(); + } + }) + .autocomplete({ + source: function( request, response ) { + $.getJSON( "search.php", { + term: extractLast( request.term ) + }, response ); + }, + search: function() { + // custom minLength + var term = extractLast( this.value ); + if ( term.length < 2 ) { + return false; + } + }, + focus: function() { + // prevent value inserted on focus + return false; + }, + select: function( event, ui ) { + var terms = split( this.value ); + // remove the current input + terms.pop(); + // add the selected item + terms.push( ui.item.value ); + // add placeholder to get the comma-and-space at the end + terms.push( "" ); + this.value = terms.join( ", " ); return false; } - }, - focus: function() { - // prevent value inserted on focus - return false; - }, - select: function( event, ui ) { - var terms = split( this.value ); - // remove the current input - terms.pop(); - // add the selected item - terms.push( ui.item.value ); - // add placeholder to get the comma-and-space at the end - terms.push( "" ); - this.value = terms.join( ", " ); - return false; - } - }); + }); }); -- cgit v1.2.3