我想在一个闪亮的应用程序中有一个textInput,当用户输入某项内容时,它可以从预定义的列表(或向量)中显示可能的自动补全。因此,用户可以点击它来节省时间,但也有可能写出不在预定义列表中的文本(因此类似于Google搜索的工作方式)。
下面是一个例子。用户可以输入"Ap“,然后点击"Apple”。但是也应该可以键入不在预定义列表中的新输入,例如“橙色”
Shinysky类似于我想要的( textInput中的自动补全,但似乎不允许不在选择向量中的新文本。
library(shiny)
library(shinysky) # install from github
choices = c("Apple", "Banana", "Strawberry")
ui <- fluidPage(
textInput.typeahead(
id = "fruit", placeholder="type a fruit name",
local = data.frame(fruit = choices, info = c("info1", "info2", "info3")),
valueKey = "fruit",
tokens = c(1, 2, 3),
template = HTML("<p class='repo-language'>{{info}}</p> <p class='repo-name'>{{fruit}}</p> <p class='repo-description'>You need to learn more CSS to customize this further</p>")
),
verbatimTextOutput("value")
)
server <- function(input, output, session) {
# typeahead
observe({
input$fruit
showshinyalert(session, "shinyalert3", sprintf("Typeahead Text Input Value: '%s'",
input$fruit), "error")
})
output$value <- renderText({input$fruit})
}
shinyApp(ui, server)也许有人有个主意?
发布于 2019-01-04 01:45:30
我花了将近两年的时间才找到解决方案:
selectizeInput(..., options = list(create = TRUE))这里还提到:shiny - looking for shortcut to combine selectize and textInput
https://stackoverflow.com/questions/41967019
复制相似问题