2010-06-30 7 views
0

J'utilise jquery autocomplete et je veux qu'il mette au point un contrôle spécifique une fois qu'un élément est sélectionné dans la liste de saisie semi-automatique. J'ai essayé $('#nextelement').focus(), et il reçoit le focus, mais le focus remonte au contrôle de saisie semi-automatique immédiatement. Comment puis-je conserver le focus sur le contrôle suivant lorsque la saisie semi-automatique se ferme?jQuery autocomplete focus contrôle suivant

[modifier] J'utilise le plugin autocomplete qui vient avec un widget Yii CAutoComplete, que les États documents est celui-ci: http://plugins.jquery.com/project/autocompletex

Répondre

1

Avez-vous essayé:

setTimeout(function() { 
    $('#nextelement').focus(); 
}, 1); 

pour changer la mise au point après la boucle d'événement en cours est fait?

+1

Cela fonctionne, mais peut-être il ya une plus belle solution :) – Rytis

+0

Quels plug-in autocomplete sont vous utilisez? Il y en a plusieurs. Il peut être possible de dire explicitement * au plugin que vous ne voulez pas que le focus soit restauré dans le champ de saisie, mais que cela dépend du plugin que vous utilisez. – Pointy

+0

Je ne vois aucun moyen de contourner le comportement du plugin via le gestionnaire "résultat". – Pointy

0

Cela me semble d'une logique/cas d'utilisation de exactement quand et quoi.

Si vous sélectionnez une saisie semi-automatique de valeur valide, vous pouvez vérifier l'état de modification du contrôle au foyer de la saisie semi-automatique.

Et si vous en sélectionnez un et comment? (cliqué, appuyez sur Entrée, juste changé etc.)

Je pense que l'utilisation de l'événement .change() sur l'élément ciblé serait préférable, puis se concentrer sur l'élément suivant dans votre formulaire - qui dépend de votre construction de votre page - frère, prochaine entrée, prochaine par id, prochaine fratrie dans la classe, quoi se concentrer de ceci est le dernier élément etc.

+0

Eh bien, le problème est probablement que l'ajout direct de gestionnaires d'événements va probablement entrer en collision avec la gestion des événements effectuée par le plugin lui-même. Pour moi, quand vous utilisez un tel plugin, il est préférable d'ajouter des gestionnaires via l'API du plugin lui-même. Ce plugin a un gestionnaire de "résultat" je pense. – Pointy

+0

Oui, mais ce que cela signifie pour moi est: réagir à l'événement de changement pour se concentrer ailleurs, donc c'est à l'extérieur (après) que l'autocomplétion a fait son affaire. –