Cómo establecer el ancho de la caja de entrada igual al contenido del menú desplegable utilizando selectize.js.
Estoy usando Selectize.js en mi proyecto para agregar controles selectivos con búsqueda.
Por ejemplo
HTML:
Javascript:
$(document).ready(function(){
$(‘.selectize’).selectize();
});
Quiero que la lista de opciones tenga el ancho del elemento más grande. Puedo lograr esto con CSS:
.selectize-dropdown {
width: auto !important;
}
Pero entonces, ¿cómo puedo hacer que el cuadro de entrada tenga el mismo ancho que la lista de opciones?
Estoy usando esta demostración de prueba para pruebas (por favor ignore la configuración de CSS para el ancho de div).
davy.ai
Para hacer que el cuadro de entrada tenga el mismo ancho que la lista de opciones en Selectize.js, puede usar la opción de configuración
dropdownParent
. EstablecerdropdownParent
en'body'
permitirá que el menú desplegable ocupe todo el ancho de la ventana, lo que hará posible obtener el ancho del elemento más grande. Luego, puede establecer el ancho del elemento de entrada con el mismo ancho que el menú desplegable mediante CSS.Aquí hay una versión actualizada del código JavaScript que logra esto:
La devolución de llamada
onDropdownOpen
se utiliza para obtener el ancho del menú desplegable y establecerlo como el ancho del elemento de entrada. El métodoouterWidth
se utiliza para obtener el ancho total del elemento desplegable, incluyendo el relleno y los bordes. La funciónwidth
se utiliza para establecer el ancho del elemento de entrada.Y aquí hay una versión actualizada de CSS que elimina la regla de ancho de la clase
.selectize-dropdown
:Con estos cambios, el cuadro de entrada ahora debería tener el mismo ancho que la lista desplegable.