2013-09-04 3 views
53

J'utilise select2 library pour ma recherche.
est-il possible de déclencher une action après avoir sélectionné un résultat de recherche? par exemple. ouvrir une popup, ou une simple alerte js.Déclenche une action après la sélection select2

$("#e6").select2({ 
    placeholder: "Enter an item id please", 
    minimumInputLength: 1, 
    ajax: { // instead of writing the function to execute the request we use Select2's convenient helper 
     url: "index.php?r=sia/searchresults", 
     dataType: 'jsonp', 
     quietMillis: 3000, 
     data: function (term, page) { 
     return { 
      q: term, // search term 
      page_limit: 10, 
      id: 10 
      }; 
     }, 
     results: function (data, page) { // parse the results into the format expected by Select2. 
      // since we are using custom formatting functions we do not need to alter remote JSON data 
      return {results: data}; 
     }, 
    }, 

    formatResult: movieFormatResult, // omitted for brevity, see the source of this page 
    formatSelection: movieFormatSelection, // omitted for brevity, see the source of this page 
    dropdownCssClass: "bigdrop", // apply css that makes the dropdown taller 
    escapeMarkup: function (m) { return m; } // we do not want to escape markup since we are displaying html in results 
}); 
+1

Vous pouvez lier à la Evénement 'change', il y a une section appelée "Events" sur le lien que vous avez donné avec un extrait de code très long pour toutes les différentes liaisons d'événements. – Ross

Répondre

116

Voir la documentation events section

Selon la version, l'un des extraits ci-dessous devrait vous donner si vous voulez, sinon il suffit de remplacer « Select2 sélection » avec le « changement ».

Version 4.0 +

Les événements sont maintenant en format: select2:selecting (au lieu de select2-selecting)

Merci à snakey pour la notification que cela a changé au 4,0

$('#yourselect').on("select2:selecting", function(e) { 
    // what you would like to happen 
}); 

Version antérieure à 4.0

$('#yourselect').on("select2-selecting", function(e) { 
    // what you would like to happen 
}); 

Juste pour clarifier les choses, la documentation select2-selecting lit:

Select2 sélection Fired lorsqu'un choix est sélectionné dans le menu déroulant , mais avant toute modification a été apportée à la sélection. Cet événement est utilisé pour permettre à l'utilisateur de rejeter la sélection en appelant event.preventDefault()

alors que le changement a:

changement Fired lorsque la sélection est modifiée.

Donc, change peut être plus approprié pour vos besoins, selon que vous voulez que la sélection se termine et ensuite faire votre événement, ou potentiellement bloquer la modification.

+10

Les événements ont d'autres noms dans les versions plus récentes (par exemple 'select2: select'), voir [https://select2.github.io/examples.html](https://select2.github.io/examples.html) – snakey

+0

Événements sont [ici] (https://select2.github.io/examples.html#events) dans le document.Pas évident avec le style FAQ. –

12

Il y avait apporté quelques modifications aux noms des événements Select2 (je pense que le v 4 et versions ultérieures.) De sorte que le « - » est changé en ce « : ».
Voir les exemples suivants:

$('#select').on("select2:select", function(e) { 
    //Do stuff 
}); 

Vous pouvez vérifier tous les événements sur le site plugin 'select2': select2 Events

3

Il fonctionne pour moi:

$('#yourselect').on("change", function(e) { 
    // what you would like to happen 
}); 
+0

Je ne comprends pas pourquoi mais ça a marché pour moi quand la réponse de Tarek ne l'a pas été. J'ai même eu sa réponse pour travailler dans un projet séparé, mais pour une raison quelconque, c'était la seule solution qui a permis à mon projet de fonctionner. – tokyo0709

Questions connexes