jQueryUI de saisie semi-automatique, sélectionnez " ne fonctionne pas sur le clic de la souris, mais fonctionne sur les principaux événements

JS/JQuery:

$this.find('input').autocomplete({
    source: "/autocomplete_tc_testcasename", 
    minLength: 2,
    focus: function(e,ui){
        $(this).val(ui.item.label);
        return false;
    },   
    select: function(e, ui) {
        console.log("Selected: "+ui.item.value);
    }    
}); 

CSS:

        .ui-autocomplete {
            max-height: 200px;
            overflow-y: auto;
            padding: 5px;
        }   
        .ui-menu {
            list-style: none;
            background-color: #FFFFEE;
            width: 50%;
            padding: 0px;
            border-bottom: 1px solid #DDDDDD;
            border-radius: 6px;
            -webkit-box-shadow: 0 8px 6px -6px black;
            -moz-box-shadow: 0 0px 0px -0px black;
            box-shadow: 0px 2px 2px 0px #999999;
        }   
        .ui-menu .ui-menu {
        }
        .ui-menu .ui-menu-item {
            color: #990000;
            font-family:"Verdana";
            font-size: 12px;
            border-top: 3px solid #DDDDDD;
            background-color: #FFFFFF;
            padding: 10px;
        }

Résumé Du Problème:

  • AJAX fonctionne très bien, je reçois toutes les entrées correctement dans le menu de saisie semi-automatique.
  • Je suis en mesure d'utiliser la touche up/down pour sélectionner les éléments de menu et une fois que j'ai appuyé sur la touche retour, sélectionnez l'événement est déclenché correctement et le message de la console s'affiche.
  • Je peux me concentrer sur l'interface utilisateur-les éléments de menu avec succès et la capture de la souris sur le cours des événements pour changer la valeur de l'entrée de texte.
  • Je n'arrive pas à cliquer sur l'élément de menu et le feu, sélectionnez l'événement. j'.e quand je clique sur un élément de menu, le message de la console n'est jamais affiché.
  • C'est comme si l'événement click est rejetant le menu et de la fermer au lieu de réellement tirer un événement select. Aucune idée sur la façon d'obtenir plus de ce problème?
  • J'ai essayé le "appendTo : $cette" place à l'entrée du div parent, puis cliquez sur la souris fonctionne très bien! - sélectionnez l'événement est déclenché et le message de la console s'affiche correctement. Mais ce n'est pas ce que je veux depuis le menu est ajouté à l'intérieur de la div parent qui déforme l'INTERFACE utilisateur, car ils partagent probablement les mêmes z-index. Même si je change de z-index à un higehr nombre dans ce cas, il n'a pas assez d'aide. Donc, je suis à la recherche d'une solution où je n'ai pas " avoir à utiliser les appendTo si possible.

J'ai trouvé diverses autres questions tout à fait dans le stade, mais aucune de ces semblent répondre à ma question.

jQuery Autocomplete - Gauche de la Souris, Cliquez sur pas de tir Sélectionnez l'événement

jQuery UI autocomplete sélectionnez l'événement à ne pas travailler avec un clic de souris

Merci!

Cela va être vraiment difficile de recréer et de résoudre, à moins que vous pouvez créer un exemple de votre problème sur jsfiddle.net ou poster un lien vers un site externe ....
Merci pour l'astuce. Dans le processus de firebug-ment le problème, j'ai trouvé que 'blur' événement est appelé avant de la souris-cliquez sur sélection sur le menu de saisie semi-automatique. Une fois que j'ai changé la logique autour de cette de gérer à la fois de ces événements dans un ordre particulier, sélectionnez fonctionne maintenant par un clic de souris.
pouvez-vous décrire exactement comment vous "changé la logique autour de cette de gérer à la fois de ces événements dans un ordre particulier"? Je suis en cours d'exécution dans ce problème et ma connaissance de la gestion des événements, la JS n'est pas assez bon encore pour me comprendre moi-même. merci
J'ai ajouté un indicateur de saisie semi-automatique=false' mondiale de flou et de saisie semi-automatique. Quand j'entre dans mon champ de saisie de saisie semi-automatique du flou fonction de gestion, j'ai un if(!la saisie semi-automatique) {//faire le flou des trucs ici}. La saisie semi-automatique "focus", j'ai mis de saisie semi-automatique=true; Dans la saisie semi-automatique "fermer", j'ai mis de saisie semi-automatique=false et appeler explicitement blur() sur mon champ de saisie semi-automatique.

OriginalL'auteur rajivRaja | 2012-03-21