Procédure de programmation pour injecter des requêtes de recherche dans Select2 v4?
J'ai construit une application web à l'aide d'un Select2 zone de recherche, qui se connecte à notre backend via AJAX. La zone de recherche transmet la requête (dire "POMMES") à l'arrière-plan, qui met ensuite à jour la page. Comment puis-je par programme injecter des requêtes de recherche dans la case de recherche? J'ai besoin de passer dans le "val", de sorte que select2 appelle le backend via AJAX et les mises à jour de la page. Je suis sûr que c'est évident, mais je ne pouvais pas le trouver dans la documentation.
Par exemple, au lieu de forcer un utilisateur de type "POMMES" dans la zone de recherche, je voudrais que l'utilisateur clique sur un bouton et le mot "POMMES" automatiquement renseigné dans le champ de recherche, puis la page de mise à jour.
Merci!
Suivantes Kevin commentaire, je ne suis pas dans cet état où le texte est intégré dans le "searchbox" et le sélecteur a choisi le bon élément. Comment dois-je soumettre (ou déclencheur) cette demande, j'ai essayé le "keydown", "pressdown", "soumettre", "clic" (ce qui efface la boîte), etc.
- La générosité n'est pas possible, par la voie, car il n'existe aucun moyen de détecter quand la requête AJAX qui est déclenchée se terminer sans accrochage dans le mondial AJAX gestionnaire.
- Juste pour confirmer, il n'y a pas moyen de forcer le clic?
- Peu importe, je suis reconnaissant à tous pour votre aide, et que la générosité est la vôtre.
- Vous pouvez forcer le résultat d'être sélectionné par la simulation de la
mouseup
événement (ou tout simplement d'injecter de l'<option>
si vous avez de l'information), mais vous ne pouvez pas prédire avec exactitude quand la liste des résultats va afficher le résultat.
Vous devez vous connecter pour publier un commentaire.
Select2 utilisé pour fournir une
select2('search', 'term')
méthode d'assistance qui aurait aidé avec cela, mais il n'a pas été portée à Select2 4.0.0.Il ya un couple de façons de le faire, mais en général ils suivent tous le même schéma des étapes
input
)Donc, dès maintenant, dans Select2 4.0.0 le code pour le faire pourrait ressembler à
JS:
HTML:
Bien que cet exemple ne pas utiliser de l'AJAX, il va déclencher une requête AJAX si Select2 est configuré pour cela.
pour moi de déclenchement 'keyup' ne travaille que lorsque l'utilisateur n'a pas de sélectionner une option encore. Ce qui fonctionne à chaque fois, c'est à seuil de déclenchement d'entrée " à la place. (testé uniquement sur Chrome)
sur la base de Kevin Brown réponse:
Vous pouvez définir
minimumInputLength
à0
puis dans ledata
fonction, vous pouvez vérifierparams.term
length
et si c'est0
, définissez le filtre de la valeur à votre recherche prédéfinie de la valeur.C'est tout à fait stupide, mais ça fonctionne 😉
Comme un complément à cette réponse, nous avons essayé de programmation pour ajouter un nouveau tag à un select2 configuré pour le marquage. Plutôt que de déclencher un événement keyup sur $de la zone de recherche, nous avons dû faire le suivant.
Cette première déclenche un événement qui provoque la "recherche" module en choisir 2 pour ajouter un en surbrillance résultat contenant le texte de l'étiquette, puis le deuxième événement à l'origine de select2 à feu "sélectionnez" événement interne qui ajoute une nouvelle balise pour le choisir 2 options, et peuvent également déclencher d'autres choses, selon la façon dont vous avez configuré.
Les réponses sur cette page m'a presque là. Et parce que d'autres semblent avoir les mêmes problèmes, je vais partager comment je l'ai résolu.
Certains commentaires sur Kevin Browns de réponse demandé comment faire pour simuler l'ENTRÉE après le texte a été saisi et est mis en évidence.
J'ai réussi à le faire qu'avec un délai d'attente:
Donc, la solution complète est celle-ci: