es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

selectizeInput eliminando los caracteres “an” de las cadenas en las opciones del menú desplegable.

Estoy construyendo una aplicación brillante donde los usuarios tienen que seleccionar ciudades para mostrar en un mapa. Hay muchas ciudades en mi base de datos, así que estoy utilizando widgets selectizeInput, con la idea de que los usuarios puedan escribir ciudades en la caja de texto para seleccionar.

Sin embargo, algo extraño está sucediendo cuando comienzo a escribir en la caja de búsqueda, las opciones de ciudad parecen tener caracteres faltantes. Específicamente, los caracteres “an” parecen estropear las cosas: “San Antonio” y “San Diego” se muestran como “S Antonio” y “S Diego”, y “Santa Ana” se muestra como “Sta Ana”. Agregué “Tánger” para ver qué sucede con una “an” que no sigue a una “S”, y aparece como “Tan”, así que estoy bastante confundido en general. ¿Alguien sabe por qué está sucediendo esto o cómo solucionarlo?

NOTA: este error no se muestra en el menú desplegable hasta que escribes ciertos caracteres (creo nuevamente, “an”). Por ejemplo, si escribes “San Diego” o “Nueva York”, puedes seleccionar estas ciudades y no ocurren errores, pero si escribes “San An-” o “Santa An-“, entonces las cosas comienzan a ponerse extrañas.

Reprex a continuación:


library(shiny) ui <- fluidPage( # Título de la aplicación titlePanel("test app"), # Barra lateral con un control deslizante para el número de bins sidebarLayout( sidebarPanel( HTML("Escribe 'San Antonio' o 'Santa Ana' para reproducir el error."), selectizeInput( inputId = "test_city_3", label = "Ciudad de referencia 3", choices = c("San Antonio","Santa Ana", "Santa Cruz","Chicago", "Nueva York","San Diego","Tánger"), options = list(placeholder = "Ciudad de referencia 3") ) ), # Mostrar un gráfico de la distribución generada mainPanel( ) ) ) # Define la lógica del servidor requerida para dibujar un histograma server <- function(input, output) { } # Ejecuta la aplicación shinyApp(ui = ui, server = server)
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema está relacionado con la biblioteca selectize.js, la cual es utilizada por el widget selectizeInput en aplicaciones Shiny. Selectize.js tiene una función llamada “smart highlighting” (resaltado inteligente), la cual intenta resaltar los términos de búsqueda en los resultados, pero en algunos casos parece resaltar los caracteres incorrectos.

    Una solución a este problema es desactivar el resaltado inteligente estableciendo la opción “highlight” en FALSE. Por ejemplo, el código selectizeInput en el reprex anterior podría ser modificado de la siguiente manera:

    selectizeInput(
      inputId = "test_city_3",
      label = "Reference City 3", 
      choices = c("San Antonio","Santa Ana", "Santa Cruz","Chicago",
                  "New York","San Diego","Tangier"),
      options = list(placeholder = "Reference City 3",
                     highlight = FALSE)
    )
    

    Esto debería evitar que selectize.js resalte los términos de búsqueda y mostrar los nombres de las ciudades correctamente en las opciones del menú desplegable.

Comments are closed.