R Shiny如何实现勾选checkboxInput后展开可关闭选项面板
实现方案
你需要借助shinyjs包控制组件的显隐状态,修改后的完整可运行代码如下:
1. UI代码修改
library(shiny) library(shinydashboard) library(shinyjs) ui <- dashboardPage( dashboardHeader(title = "X"), dashboardSidebar( useShinyjs(), # 启用shinyjs功能 checkboxInput("choice", "Are you into it?"), # 独立选项区块,初始默认隐藏 hidden( div(id = "extra_options_block", style = "border: 1px solid #e0e0e0; border-radius: 4px; padding: 12px 8px; margin: 8px 0; position: relative;", # 右上角关闭按钮 actionButton("close_block", "×", style = "position: absolute; top: 2px; right: 8px; border: none; background: transparent; font-size: 22px; padding: 0; color: #666;"), checkboxGroupInput("stages", "Stages: ", choices = c("First", "Second", "Third")), selectInput("status", "Status of this card: ", choices = c(" ", "Active", "Closed")), dateInput(inputId = "date", label = "Choose date : "), sliderInput(inputId = "inactivity", label = "Time of inactivity ", min = 6, max = 24, value = 10) ) ) ), dashboardBody( dataTableOutput(outputId = "table") ) )
2. 服务端控制逻辑
server <- function(input, output, session) { # 监听choice复选框状态,控制区块显隐 observeEvent(input$choice, { if (input$choice) { show("extra_options_block") } else { hide("extra_options_block") } }) # 监听关闭按钮点击,联动取消choice勾选并隐藏区块 observeEvent(input$close_block, { updateCheckboxInput(session, "choice", value = FALSE) hide("extra_options_block") }) # 此处补充你原有表格渲染逻辑 output$table <- renderDataTable({ head(iris) }) } # 运行应用 shinyApp(ui, server)
功能说明
- 勾选ID为
choice的复选框后自动展开独立选项区块,取消勾选自动隐藏区块 - 点击区块右上角的关闭按钮,会同步取消
choice的勾选状态,同时隐藏区块 - 区块默认加了边框样式标识独立性,你可以调整
style参数自定义外观
内容的提问来源于stack exchange,提问作者jjrose
相关产品推荐
相关产品推荐

