¿Hay alguna forma de cargar select2 a un valor predeterminado sin activar el evento de cambio?

Actualmente estoy haciendo:

$('#mylist').val(2).trigger("change");

Pero esto crea un retraso en el que el usuario al principio verá una opción y luego cambiará, lo cual es bastante molesto.

3
space_food_ 13 ene. 2017 a las 19:39

3 respuestas

La mejor respuesta

Establezca un valor predeterminado en su HTML:

<select id="myList">
   <option id="foo">option 1</option>
   <option id="bar" selected="selected">option 2</option>
</select>

Luego llame a select2 en su elemento para inicializarlo:

$('#myList').select2();

O

$('#myList').select2("val", null);

3
Pabs123 13 ene. 2017 a las 16:45

Si desea establecer una opción seleccionada, normalmente puede hacer:

 $('#element').val('your_val').trigger('change');

Pero si no desea ejecutar el disparador, primero debe destruirlo y luego asignar val antes de volver a crear, de esta manera:

$('#element').select2('destroy');
$('#element').val('your_val').select2();
2
nicpas 28 oct. 2018 a las 00:58

Sé que llego muy tarde para responder esta pregunta. Estaba enfrentando el mismo problema. Pero investigando un poco, encontré una solución que funciona a las mil maravillas.

Puede configurar una opción usando el código a continuación

$("#mylist").val(2).trigger('change.select2');

Esta solución no activará el evento de cambio, pero establece la opción en el componente select2.

Espero que te ayude.

5
BeingprabhU 25 oct. 2019 a las 11:34