有没有什么方法可以提供可用的选项,同时使用闪亮的textInput类似于闪亮的selectinput选项?
即,如果用户键入字母或字符,则必须提供字母或字符中的所有可用选项。由于我有很多选项,因此选择输入速度慢,而不是输入的好选项。因此,我选择了textInput。
任何建议都会有所帮助!
由于
答案 0 :(得分:4)
您可以将selectInput与参数multiple = TRUE
一起使用selectInput(inputId, label, choices, multiple = TRUE)
这将输出一个文本框而不是下拉列表,当用户开始输入时,将会过滤掉该字母中的所有可用选项。
答案 1 :(得分:1)
使用DT,你可以做一些奇特的东西。下面是一个示例,其中表列出了包含您键入的文本的所有选项。如果单击表格单元格,则会使用表格单元格的文本更新文本输入。您也可以使用表格的搜索字段。
library(shiny)
shinyApp(
ui = fluidPage(textInput("text", "Please input text:"),
DT::dataTableOutput('tbl')),
server = function(session, input, output) {
# all your choices for the textfield go into "text" column
allData <- data.frame(ID = '', text = c(paste0("Text",1:50)))
# table with only the texts that contain input$text
output$tbl = DT::renderDataTable(
allData[grep(input$text, allData$text), ],
selection = 'none',
rownames = FALSE,
options = list(searchHighlight=T)
)
# fill textInput after Click in Table
observeEvent(input$tbl_cell_clicked, {
info <- input$tbl_cell_clicked
if (is.null(info$value) || info$col != 1) return()
else {
updateTextInput(session, "text", value = info$value)
}
})
}
)
答案 2 :(得分:0)
selectinput类型减慢而不是输入的好选项
在这种情况下,具有多项选择的 selectInput
是最佳选择。通过将selectInput
移动到服务器中,可以轻松管理缓慢加载。
只需输入ui.R
:
selectizeInput(inputId=..., label=..., choices = NULL, multiple = TRUE)
和server.R
:
server <- function(input, output, session) {
updateSelectizeInput(session = session,inputId =...,choices=..., server = TRUE)}
现在加载缓慢不会有任何问题。