Esto pertenece a códigos anteriores a select2 versión 4
Tengo un código simple para select2
obtener datos de ajax
$("#programid").select2({
placeholder: "Select a Program",
allowClear: true,
minimumInputLength: 3,
ajax: {
url: "ajax.php",
dataType: 'json',
quietMillis: 200,
data: function (term, page) {
return {
term: term, //search term
flag: 'selectprogram',
page: page // page number
};
},
results: function (data) {
return {results: data};
}
},
dropdownCssClass: "bigdrop",
escapeMarkup: function (m) { return m; }
});
Este código funciona, sin embargo, necesito establecer un valor como si estuviera en modo de edición. Cuando el usuario selecciona un valor por primera vez, se guardará y cuando necesite editar ese valor debe aparecer en el mismo menú de selección ( select2
) para seleccionar el valor previamente seleccionado, pero no puedo encontrar la manera.
ACTUALIZAR:
El código HTML:
<input type="hidden" name="programid" id="programid" class="width-500 validate[required]">
El acceso programático Select2 no funciona con esto.
javascript
php
jquery
ajax
jquery-select2
Limpia los dos
fuente
fuente
$("#programid").val()
Respuestas:
Para establecer dinámicamente el valor "seleccionado" de un componente Select2:
Donde el segundo parámetro es un objeto con valores esperados.
ACTUALIZAR:
Esto funciona, solo quería tener en cuenta que en el nuevo select2, "a_key" es "texto" en un objeto select2 estándar. entonces:
{id: 100, text: 'Lorem Ipsum'}
Ejemplo:
Gracias a @NoobishPro
fuente
$('#inputID').val(100).trigger('change')
Ver select2.github.io/…Paso # 1: HTML
Paso # 2: Crea una instancia de Select2
Paso # 3: establezca su valor deseado
Si usa select2 sin AJAX , puede hacer lo siguiente:
También puede hacerlo:
Para select2 v4 , puede agregar directamente una opción de la siguiente manera:
O con JQuery:
otro ejemplo
fuente
HTML:
JavaScript:
jsfiddle
fuente
Además, como lo intenté, cuando uso ajax en select2, ¡los métodos de control programático para establecer nuevos valores en select2 no funcionan para mí! Ahora escribo este código para resolver el problema:
Puede probar el código de muestra completo en el enlace aquí: https://jsfiddle.net/NabiKAZ/2g1qq26v/32/
En este código de muestra hay un ajax select2 y puede establecer un nuevo valor con un botón.
Mostrar fragmento de código
fuente
Pruebe este anexo y luego seleccione. No duplica la opción en la llamada AJAX.
fuente
Me gustó esto
fuente
En la versión actual activada
select2
,v4.0.1
puede establecer el valor de esta manera:fuente
destroy
volver a llamar al complemento. Ver el código actualizado ..so that I wouldn't have to duplicate them
¿Por qué tengo que duplicarlos? Cuando lo haces,destroy
elselect
sigue ahí con todos los suyosoptions
.$example.select2({ ... this ... })
Para Ajax, use
$(".select2").val("").trigger("change")
. Eso debería resolver el problema.fuente
Creo que necesitas la
initSelection
funciónfuente
HTML
JS
fuente: https://select2.github.io/options.html
fuente
En Select2 V.4
utilizar
$('selector').select2().val(value_to_select).trigger('change');
Creo que debería funcionar
fuente
Establezca el valor y active el evento de cambio inmediatamente.
fuente
Resolví mi problema con este simple código. Donde #select_location_id es un ID del cuadro de selección y el valor es el valor de una opción enumerada en el cuadro de select2.
fuente
La respuesta de An Phan funcionó para mí:
Pero agregar el cambio desencadena el evento
fuente
puedes usar este código:
donde 2 en "número: 2" y 3 en "número: 3" son el campo de identificación en la matriz de objetos
fuente
A veces, se
select2()
cargará primero, y eso hace que el control no muestre correctamente el valor seleccionado previamente. Poner un retraso de algunos segundos puede resolver este problema.fuente
Sería más apropiado aplicar
select2
después de elegir uno de los seleccionados actuales.fuente
Hice algo como esto para preestablecer elementos en el menú desplegable select2 ajax
fuente
Deberías usar:
fuente
Si está utilizando un cuadro de entrada, debe establecer la propiedad "múltiple" con su valor como "verdadero". Por ejemplo,
fuente
En
select2 < version4
existe la opcióninitSelection()
para la carga de datos a distancia, a través del cual es posible establecer el valor inicial para la entrada como en el modo de edición.Documentación de origen: Select2 - 3.5.3
fuente
Solo para agregar a cualquier otra persona que pueda haber tenido el mismo problema conmigo.
Estaba tratando de configurar la opción seleccionada de mis opciones cargadas dinámicamente (desde AJAX) y estaba tratando de configurar una de las opciones como seleccionada dependiendo de alguna lógica.
Mi problema surgió porque no estaba tratando de establecer la opción seleccionada en función de la ID que debe coincidir con el valor, ¡no el valor que coincide con el nombre!
fuente
Para varios valores, algo como esto:
que se traducirá en algo como esto
fuente
Esto puede ayudar a alguien a cargar datos de select2 desde AJAX mientras carga datos para editar ( aplicable para selección única o múltiple ):
Durante mi carga de formulario / modelo:
Llame para seleccionar datos para Select2:
y si puede tener problemas con la codificación, puede cambiar según su requisito:
fuente
si obtiene sus valores de ajax, antes de llamar
confirmar que la llamada ajax se ha completado, usando la función jquery cuando
fuente
Para construir sobre la respuesta de @ tomloprod. Por la extraña posibilidad de que esté usando x-editable , y tenga un campo select2 (v4) y tenga varios elementos que debe preseleccionar. Puede utilizar el siguiente código:
y aquí está en acción:
Supongo que esto funcionaría incluso si no usa x-editable. Espero que htis pueda ayudar a alguien.
fuente
Puedes usar este código:
Pon tu valor deseado en lugar de Your_value
Espero que funcione :)
fuente
Bonito y fácil:
Y cambia
id_city
a la identificación de su selección.Editar: Después del comentario de Glen, me doy cuenta de que debería explicar por qué y cómo funcionó para mí:
Hice que
select2
trabajar fuera realmente agradable para mi forma. Lo único que no pude hacer funcionar fue mostrar el valor seleccionado actual al editar. Buscaba una API de terceros, guardaba registros nuevos y editaba registros antiguos. Después de un tiempo me di cuenta de que no necesitaba establecer el valor correctamente, solo la etiqueta dentro del campo, porque si el usuario no cambia el campo, no pasa nada. Después de buscar y ver a mucha gente que tiene problemas con él, decidí hacerlo con Javascript puro. Funcionó y publiqué para quizás ayudar a alguien. También sugiero configurar un temporizador para ello.fuente