当Shin app中的textinput为空时禁用操作按钮[R]

时间:2017-10-23 13:53:07

标签: r shiny shinyjs

我正构建一个闪亮的应用,当用户点击"搜索"时,会在其中生成来自textInput的查询。动作按钮。如果textInput框为空,我希望该按钮被禁用。我在这里使用shinyjs::toggleState(),但我无法弄清楚应用什么逻辑来查看文本框是否为空。在我下面的可重现文件中,我实施的逻辑是is.null(input$query)。我还试过了is.na(input$query)length(input$query) == 0input$query == '',都没有成功我应该把它放在那里?

这是app.r文件:

library(shiny)
library(shinyjs)

ui <- fluidPage(
  sidebarLayout(
    sidebarPanel(
      useShinyjs(),
      textInput(inputId = "query", label = "Enter query:", value = ""),
      actionButton(inputId = "search", label = "Search", icon = icon("search"))
    ),
    mainPanel()
  )
)

server <- function(input, output) {
  observe({
    toggleState("search", !is.null(input$query))
  })
}

shinyApp(ui = ui, server = server)

1 个答案:

答案 0 :(得分:1)

这样的事情吗?

 observe({
    if(is.null(input$query) || input$query == ""){
      disable("search")
    }
    else{
      enable("search")
    }
  })

根据@Sagar你也可以这样做:

observe({
  toggleState("search", input$query != "" | is.null(input$query))
})

observeEvent(input$query,{
  toggleState("search", input$query != "" | is.null(input$query))
})