selectizeInput 从下拉选项中的字符串中删除 "an" 个字符

selectizeInput removing "an" characters from strings in dropdown options

我正在构建一个闪亮的应用程序,用户必须 select 个城市才能在地图上显示。我的数据库中有很多城市,所以我使用 selectizeInput 小部件,用户可以在文本框中输入城市到 select.

但是,当我开始在搜索框中输入内容时,出现了一些奇怪的情况,城市选项似乎缺少字符。具体来说,字符“an”似乎把事情搞砸了:“San Antonio”和“San Diego”显示为“S Antonio”和“S Diego”,而“Santa Ana”显示为“Sta Ana”。我添加了“丹吉尔”以查看不在“S”之后的“an”会发生什么,它显示为“Tan”,所以我很困惑。有人知道为什么会这样或如何解决吗?

注意:在您键入某些字符(我又想了一遍,“an”)之前,它们不会在下拉列表中显示此错误。例如,如果您输入“San Diego”或“New York”,您可以 select 这些城市并且不会出现错误,但是如果您输入“San An-”或“Santa An-”,那么事情就开始变得奇怪。

下面的代表:


library(shiny)

# Define UI for application that draws a histogram
ui <- fluidPage(

    # Application title
    titlePanel("test app"),

    # Sidebar with a slider input for number of bins 
    sidebarLayout(
        sidebarPanel(
            HTML("Type 'San Antonio' or 'Santa Ana' to reproduce the error."),
            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")
            )
        ),

        # Show a plot of the generated distribution
        mainPanel(
        )
    )
)

# Define server logic required to draw a histogram
server <- function(input, output) {

}

# Run the application 
shinyApp(ui = ui, server = server)

这似乎是 selectize.jsshiny::selectizeInput() 在幕后使用)中的一个已知但未记录的错误。参见例如this issue 在 GitHub。

每当您在搜索中重复一个词时,该词(或子字符串)就会从列表中的所有选项中删除。这就是为什么搜索“San Antonio”等会删除“an”的原因。更小的例子,你可以搜索“s s”,也会出现同样的错误。

修复:

我找到的唯一修复方法是设置 options = list(highlight = FALSE)。不幸的是,这将一起删除突出显示,但可能是值得的,因为您的列表中有很多“san* an*”国家。

这是根据您的代码在较小的 repex 中使用的修复:

library(shiny)

ui <- fluidPage(
    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
        )
    )
)

server <- function(input, output) {}

shinyApp(ui = ui, server = server)