闪亮 - textInput

Posted

技术标签:

【中文标题】闪亮 - textInput【英文标题】:Shiny - textInput 【发布时间】:2016-09-22 15:49:42 【问题描述】:

在使用类似于闪亮选择输入选项的闪亮文本输入时,有什么方法可以提供可用选项?

也就是说,如果用户键入一个字母或字符,则必须提供该字母或字符内的所有可用选项。由于我有很多选择,因此 selectinput 会变慢,而不是输入的好选择。因此,我选择 textInput。

任何建议都会有所帮助!

谢谢

【问题讨论】:

可能 selectize 是你需要的:shiny.rstudio.com/articles/selectize.html question 的答案可能对您有所帮助 澄清一些混淆:默认情况下,selectInput() 和 selectizeInput() 使用 javascript 库 selectize.js。除非您使用 selectize=FALSE 在 selectInput() 上专门选择基本输入。所以每个人都在谈论selectize 的不同模式。见gallery和reference 【参考方案1】:

您可以将 selectInput 与参数 multiple = TRUE 一起使用

selectInput(inputId, label, choices, multiple = TRUE)

这将输出一个文本框而不是下拉菜单,并且当用户开始输入字母中的所有可用选项时,将被过滤掉。

Create a select list input control

Example

【讨论】:

【参考方案2】:

使用 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)
      
    )
  
)

【讨论】:

【参考方案3】:

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)

现在您应该没有任何加载缓慢的问题。

【讨论】:

以上是关于闪亮 - textInput的主要内容,如果未能解决你的问题,请参考以下文章

闪亮的:如何在闪亮的应用程序中添加反应栏

禁用以另一个闪亮输入为条件的闪亮输入

当 menuItem 中的更多功能使用闪亮和闪亮的仪表板时,tabItem 无法显示内容

将闪亮应用程序库部署到闪亮服务器的最佳(标准)方法?

闪亮:从闪亮的应用程序中打开新的浏览器选项卡

闪亮的应用程序无法在闪亮的服务器上启动