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