繁体   English   中英

闪亮-textInput

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM