Estoy usando la biblioteca select2 para mi búsqueda.
¿Hay alguna forma de activar una acción después de seleccionar un resultado de búsqueda? por ejemplo, abra una ventana emergente o una simple alerta js.
$("#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
});
jquery
search
jquery-select2
spyfx
fuente
fuente
Respuestas:
Ver la sección de eventos de documentación
Dependiendo de la versión, uno de los fragmentos a continuación debería proporcionarle el evento que desea; alternativamente, simplemente reemplace "select2-selected" con "change".
Versión 4.0 +
Los eventos ahora están en formato:
select2:selecting
(en lugar deselect2-selecting
)Gracias a Snakey por la notificación de que esto ha cambiado a partir de la 4.0.
$('#yourselect').on("select2:selecting", function(e) { // what you would like to happen });
Versión anterior a 4.0
$('#yourselect').on("select2-selecting", function(e) { // what you would like to happen });
Solo para aclarar, la documentación para
select2-selecting
dice:mientras que el cambio tiene:
Por
change
lo tanto, puede ser más apropiado para sus necesidades, dependiendo de si desea que la selección se complete y luego realice su evento, o potencialmente bloquear el cambio.fuente
Se realizaron algunos cambios en los nombres de los eventos de select2 (creo que en la versión 4 y posteriores), por lo que el '-' se cambia a este ':' .
Vea los siguientes ejemplos:
$('#select').on("select2:select", function(e) { //Do stuff });
Puede consultar todos los eventos en el sitio del complemento 'select2': eventos select2
fuente
Esto funciona para mi:
$('#yourselect').on("change", function(e) { // what you would like to happen });
fuente
.change
evento llega más tarde en la serie de ejecuciones que elselect2:select
evento. Para mí, estaba tratando de capturar el css de la selecciónselect2:select
pero, aunque lo vi en el inspector, no pude capturarlo a través deselect2:select
; cuando lo cambié.change
funcionó porque Select2 activa elselect2:select
evento antes de actualizar el css para la selección original ... un poco loco , en mi opinión.Según mi uso anterior v.4, esto funcionará
$('#selectID').on("select2:select", function(e) { //var value = e.params.data; Using {id,text format} });
Y por menos de la v.4 esto funcionará:
$('#selectID').on("change", function(e) { //var value = e.params.data; Using {id,text} format });
fuente
e.params.args.data
Por encima de v4
$('#yourselect').on("select2:select", function(e) { // after selection of select2 });
fuente
//when a Department selecting $('#department_id').on('select2-selecting', function (e) { console.log("Action Before Selected"); var deptid=e.choice.id; var depttext=e.choice.text; console.log("Department ID "+deptid); console.log("Department Text "+depttext); }); //when a Department removing $('#department_id').on('select2-removing', function (e) { console.log("Action Before Deleted"); var deptid=e.choice.id; var depttext=e.choice.text; console.log("Department ID "+deptid); console.log("Department Text "+depttext); });
fuente