[英]Shiny - textInput
在闪亮的情况下使用textInput类似于闪亮的selectinput选项,有什么方法可以提供可用选项?
也就是说,如果用户键入字母或字符,则必须提供字母或字符内的所有可用选项。 由于我有很多选择,因此selectinput会减慢速度,对于输入而言不是一个好的选择。 因此,我选择textInput。
任何建议都会有所帮助!
谢谢
您可以将selectInput与参数multiple = TRUE一起使用
selectInput(inputId, label, choices, multiple = TRUE)
这将输出一个文本框,而不是下拉列表,并且当用户开始键入字母时,所有可用选项都将被过滤。
使用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)
}
})
}
)
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)}
现在,慢速加载应该不会有任何问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.