Eliminar el valor seleccionado anteriormente de la lista select2.
Tengo un select con una de las opciones desactivadas (se desactiva/activa dinámicamente cuando un usuario hace clic en otros campos del formulario, agregando el atributo “disabled” con jquery):
Por alguna razón, tengo que seleccionar la primera opción de este select, y no puedo modificar esta parte del código:
$(“select[name=’custom’]”).select2();
$(“select[name=’custom’]”).val($(“select[name=’custom’] option:first”).val());
$(“select[name=’custom’]”).select2(“val”, $(“select[name=’custom’] option:first”).val());
No quiero ver la opción desactivada en mi lista de select2, y uso algo de CSS para ocultarla:
.select2-results__option[aria-disabled=”true”] {
display: none;
}
Se oculta de la lista de select2, pero… todavía se muestra como valor seleccionado. ¿Cómo puedo evitar mostrarla también como valor seleccionado?
Aquí hay un fiddle https://jsfiddle.net/y1tsh8ka/4/
davy.ai
Para evitar que la opción deshabilitada se muestre como la opción seleccionada, puedes agregar una declaración condicional para verificar si la opción seleccionada está deshabilitada, y si es así, seleccionar la siguiente opción habilitada en su lugar. Puedes usar el método
prop()
para verificar si una opción está deshabilitada o no, y el métodofind()
para seleccionar la siguiente opción habilitada.Aquí está el código actualizado:
Este código utiliza la opción
initSelection
del complementoselect2
para verificar si la opción seleccionada está deshabilitada y seleccionar la siguiente opción habilitada en su lugar. La funcióninitSelection
se ejecuta después de que se inicializa el select2, y su resultado se utiliza para actualizar la visualización del select2.Ten en cuenta que el código también selecciona la primera opción habilitada utilizando el selector
:not(:disabled)
.