Perdon, en otros foros (en ingles como stackoverflow) vi que se referian al nombre que muestra la lista como placeholder y me confundí. Yo me refiero a la opción seleccionada, en la lista aparece el nombre de la ciudad/zona seleccionada pero cuando abro la lista la opción seleccionada es la primera y el valor es 0, aunque se está mostrando el nombre... algo raro del plugin.
Select2 permite hacer muchisimas cosas, entre otras permite buscar y añadir nuevas opciones a la lista, así es como lo inicializo:
Pero creo que se trata de un fallo de la versión del select2 que no detecta correctamente el cambio de valor y no lo realiza. Abriré un issue en el repositorio.
EDITO: Vale ya he encontrado el problema. Al hacer el trigger change, se hacia tambien el on change que se encarga de popular las listas. Un peligroso conflicto de intereses, no volverá a pasar
EDITO 2: Dejo la respuesta por si alguien usa este plugin, hay que hacer que sea solo select2 el que active el change y no jquery: .trigger('change.select2'); de esta manera change() solo se produce en la instancia de select2.
Select2 permite hacer muchisimas cosas, entre otras permite buscar y añadir nuevas opciones a la lista, así es como lo inicializo:
Código (javascript) [Seleccionar]
$('.location select').select2();
$('.location select[name="location[city]"], .location select[name="location[zone]"]').select2({
tags: true,
createTag: function (params) {
return {
id: params.term,
text: params.term,
newOption: true
}
},
templateResult: function (data) {
var $result = $("<span></span>");
$result.text(data.text);
if (data.newOption) {
$result.append(" <em>(nuevo)</em>");
}
return $result;
}
});
Pero creo que se trata de un fallo de la versión del select2 que no detecta correctamente el cambio de valor y no lo realiza. Abriré un issue en el repositorio.
EDITO: Vale ya he encontrado el problema. Al hacer el trigger change, se hacia tambien el on change que se encarga de popular las listas. Un peligroso conflicto de intereses, no volverá a pasar
EDITO 2: Dejo la respuesta por si alguien usa este plugin, hay que hacer que sea solo select2 el que active el change y no jquery: .trigger('change.select2'); de esta manera change() solo se produce en la instancia de select2.