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

j'ai une liste de liens, et j'ai cette boîte de recherche #reportname. Lorsque l'utilisateur tape dans la zone de recherche, la saisie semi-automatique affichera le texte des liens dans une liste.

<div class="inline">
<div class="span-10">
<label for="reportname">Report Name</label>
<input type="text" name="reportname" id="reportname" />
</div>
<div class="span-10 last">
<button type="button" id="reportfind">Select</button>
</div>
</div>

l'utilisateur peut alors utiliser la flèche du clavier pour sélectionner l'un des textes, et quand il appuie sur Entrée, le navigateur va à l'adresse du lien. So far So good.

<script type="text/javascript">
    $(document).ready(function () {
        $("#reportname").autocomplete({
            source: $.map($("a.large"), function (a) { return a.text }),
            select: function () { $("#reportfind").click() }
        })
        $("#reportfind").click(function () {
            var reportname = $("#reportname")[0].value
            var thelinks = $('a.large:contains("' + reportname + '")').filter(
                function (i) { return (this.text === reportname) })
            window.location = thelinks[0].href
        })
    });
</script>

le problème est lorsque l'utilisateur tape, autocomplete affiche une liste, puis l'utilisateur utilise la souris pour cliquer sur l'un des résultats. La navigation au clavier, le contenu de la zone de recherche est modifié, mais si l'utilisateur clique sur une des options, la boîte de recherche n'est pas modifié et l'événement select est immédiatement déclenchée.

Comment faire fonctionner le script avec la sélection du clavier et de la souris? Comment puis-je différencier sélectionner les événements qui sont déclenchés par le clavier avec celles déclenchées par la souris?

24
demandé sur Endy Tjahjono 2011-09-06 10:08:43

8 réponses

à votre 2e question: "Comment puis-je faire la différence entre les événements select qui sont déclenchés par le clavier et ceux déclenchés par la souris?"

event l'objet dans les événements UI jQuery inclurait un