2010-05-07 7 views
2

Voir: http://www.airbnb.com/problème jQuery Autocomplete - Maj se comporte clé identique à retour clé

Dans la barre de recherche, commencez à taper « san f » (sans guillemets, en minuscules), puis appuyez sur Retour (ou Entrée). "San Francisco" est autocompleted. C'est bon!

Maintenant effacez le champ de recherche et recommencez. tapez "San F" et boom - "San Francisco" est automatiquement complétée dès que vous appuyez sur Maj. Ce n'est pas prévu.

Cela se produit dans FF & Safari, mais n'a pas été testé ailleurs. J'ai regardé le code source de jQuery Autocomplete et tout a l'air normal.

Quelqu'un at-il déjà vécu cela?

+0

pas seulement son quart de travail. son onglet aussi. Fondamentalement, votre code divise le clavier en trois catégories .... soit des caractères pour entrer des mots, des codes clés qui ne font rien et des codes clés qui confirment comme tab, shift et enter. Ils ne sont probablement pas basés sur un code de code particulier bla = bla mais plutôt sur une gamme d'entre eux – XGreen

Répondre

1

Pour contourner ce problème:

à l'objet KEY ajouter:

SHIFT: 16, 
    CTRL: 17, 
    ALT: 18 

Et au sommet de la fonction add onChange:

if (jQuery.inArray(lastKeyPressCode, [KEY.SHIFT, KEY.CTRL, 
     KEY.ALT]) !== -1) 
       return; 
1

Je pense que dans la configuration de l'autocomple autoFill: true est définie. Enlevez celui-ci il résoudra le problème. Mais dans ce cas après l'écriture du "san f" il ne remplira pas automatiquement le "san Francisco, CA".

0

Essayez l'option de recherche dans autocomplete comme suit:

$(function() { 
var availableTags = [ 
    "ActionScript", 
    "AppleScript", 
    "Asp", 
    "BASIC", 
    "C", 
    "C++", 
    "Clojure", 
    "COBOL", 
    "ColdFusion", 
    "Erlang", 
    "Fortran", 
    "Groovy", 
    "Haskell", 
    "Java", 
    "JavaScript", 
    "Lisp", 
    "Perl", 
    "PHP", 
    "Python", 
    "Ruby", 
    "Scala", 
    "Scheme" 
]; 
$("#tags").autocomplete({ 
    source: availableTags, 
    search: function(event, ui) { 
     if(event.which == 16 || event.which == 17) 
     event.preventDefault(); 
    } 
});