La primera lista al no ser dinamica simplemente uso change() para que select2 sepa que el valor ha cambiado y lo refleje (tanto el placeholder como el valor de la lista en sí).
En el caso de las otras dos listas, es algo increible... cada vez que refresco (F5) la página, estas dos listas hacen algo distinto... no sé si es porque son dinamicas, pero no funciona.
Buscando en google he visto que para estos casos se usa la función trigger('change'); y opcionalmente se vuelve a instanciar select2 en el elemento antes de cambiar el valor. Lo estoy haciendo pero sigue sin funcionar:
Tengo un botón para cada lista que muestra con un alert el valor actual de cada lista. La segunda lista a veces muestra el valor y otras no, la tercera siempre muestra 0...
- El placeholder cambia (puedo ver el nombre de la ciudad/zona), pero al abrir la lista la opción seleccionada es la primera (valor 0).
- En el caso de la tercera lista (zonas), a veces llega a no suceder absolutamente nada. Otras simplemente cambia el placeholder pero el valor sigue siendo 0.
Código
$(function () { var province = <?php echo $province; ?>, city = <?php echo $city; ?>, zone = <?php echo $zone; ?>; // province $('select[name="location[province]"]').val(province).change(); // city content = '/get?op=1&id=' + province + '&list=1&admin=1'; $('select[name="location[city]"]').load(content, function() { $(this).select2(); // reinstanciar el plugin $(this).val(city).trigger('change'); }); // zone content = '/get?op=1&id=' + city + '&list=2&admin=1'; $('select[name="location[zone]"]').load(content, function() { $(this).select2(); $(this).val(zone).trigger('change'); }); });
Las tres variables están bien, abro el código fuente de la página y puedo ver que cada una tiene el número (entero).
¿Alguien sabe cual puede ser el problema?
Gracias!