passer des paramètres à jQuery select2 appel ajax
Je suis d'essayer de passer un paramètre supplémentaire à un appel ajax au sein de select2:
$(".auto-sug").select2({
width:'element',
minimumInputLength:2,
ajax: {
url: "/action/get-custom.php",
data: function (term, page) {
return {
q: term, //search term
page_limit: 10
};
},
results: function (data, page) {
return {results: data.stuff};
}
}
});
Je veux passer à un autre paramètre à l'appel ajax... l'id de l'élément lui-même
<input type="text" class="auto-sug" name="custom" id="3383" />
cependant, je suis incapable de comprendre comment accéder à l'id de l'élément (3383) ou toute autre valeur sur la page.
bonjour. qu'est-ce que l' .select2 méthode? ne qui fonctionnent réellement? est-ce que vous utilisez? github.com/ivaynberg/select2/blob/master/select2.js
oui. désolé. j'ai oublié de poster le lien.
eh bien, il semble comme il n'est pas natif de gestionnaire d'événement onChange pour ce plugin...en fonction de mon examen rapide de la documentation: ivaynberg.github.com/select2/#documentation. la raison pour laquelle vous ne pouvez pas obtenir l'id est parce que le select2 méthode a besoin d'un moyen pour extraire l'id de l'attribut lorsqu'une valeur est sélectionnée. avez-vous essayé de tout autre code?
maintenant que j'y pense plus, prendre l'ajax méthode de l'constructeur et faire quelque chose comme $(".auto-sug").on('change', function(){ var inputData = $(this).select2("données"); var inputId = $(this).prop('id'); mettre votre méthode ajax ici avec inputData et inputId});
oui. désolé. j'ai oublié de poster le lien.
eh bien, il semble comme il n'est pas natif de gestionnaire d'événement onChange pour ce plugin...en fonction de mon examen rapide de la documentation: ivaynberg.github.com/select2/#documentation. la raison pour laquelle vous ne pouvez pas obtenir l'id est parce que le select2 méthode a besoin d'un moyen pour extraire l'id de l'attribut lorsqu'une valeur est sélectionnée. avez-vous essayé de tout autre code?
maintenant que j'y pense plus, prendre l'ajax méthode de l'constructeur et faire quelque chose comme $(".auto-sug").on('change', function(){ var inputData = $(this).select2("données"); var inputId = $(this).prop('id'); mettre votre méthode ajax ici avec inputData et inputId});
OriginalL'auteur Cary | 2012-11-30
Vous devez vous connecter pour publier un commentaire.
En supposant que il y a plusieurs éléments avec la classe
auto-sug
, vous pouvez essayer quelque chose comme ceci:Dans le rappel de
.each()
, vous devriez être en mesure d'utiliser$(this).data(key)
.Merci, j'ai eu des attributs data-dont je ne pouvais pas laisser passer. toujours, il comprend l'ancien et je ne pouvais pas l'appeler comme attr('data-attribut') donc c'est la meilleure approche pour mon cas.
merci à vous, une solution élégante. M'a fallu deux bonnes heures pour trouver ce fil. J'ai eu à utiliser
$( this ).attr( 'id' )
pour obtenir l'id.Pas travaillé, pouvez-vous essayer de poster l'exemple complet? Peut-être que quelque chose est raté.
OriginalL'auteur sjy
Vous devriez passer ce paramètre supplémentaire à l'intérieur de la fonction transmission de données au lieu de la racine de l'ajax, pour exécuter chaque fois que vous faites une demande:
Ensuite pour obtenir l'id de l'actuel select2 vous pouvez remplacer
whateverValue
avec$(this).data(key)
C'est en fait tout à fait utile, mais s'il vous plaît mise à jour de la réponse à l'issu de la chaîne de requête: ?q=terme&anotherParm=whatEverValu&page_limit=10
Cela devrait être approuvé réponse; en passant dans les données en fonction de la demande de courir beaucoup plus vite. Vous pouvez effacer l'option que vous venez de prendre et de faire une autre sélection en temps réel, même lorsque l'on traite avec un grand ensemble de données.
OriginalL'auteur Sergio
Vous pouvez ajouter une nouvelle params ici.
OriginalL'auteur Maximiliano Cesán