如何在用户点击Default单选按钮时重置Shiny的numericInput值
解决Shiny应用默认值自动重置问题
要实现切换回「Default」选项时自动重置输入框为默认值,只需在监听adv.sel变化的observeEvent中添加重置逻辑即可,具体修改如下:
- 在「Default」分支中,除禁用输入框外,调用
updateNumericInput重置两个输入框的默认值 - 保留「Custom」分支的启用逻辑不变
修改后的完整代码:
library(shiny) library(shinydashboard) library(shinyjs) opts.adv <- c("Default","Custom") ui <- dashboardPage(skin = "blue", dashboardHeader(title = "生存分析",titleWidth = 450), dashboardSidebar(id="", sidebarMenu(id = "tabs", menuItem("生存分析",tabName = "menuSurvival", icon = shiny::icon("skull-crossbones")), actionButton("btnQuit","退出",icon = shiny::icon("xmark"),class="btn-lg btn-danger"))), dashboardBody( useShinyjs(), tabItems( tabItem(tabName = "menuSurvival", fluidRow(column(4,style="width:25%;", box(title="生存参数",status="primary",solidHeader=TRUE,width=NULL, radioButtons("adv.sel","生存选项",opts.adv), numericInput("mu.custom","均值(默认=0.1)",0.1,min=0,max=2,step=0.01), numericInput("var.custom","方差(默认=0.05)",0.05,min=0,max=0.5,step=0.01))))) ))) server <- function(input, output, session) { observeEvent(input$adv.sel, { if (input$adv.sel == "Default") { shinyjs::disable(id = "mu.custom") shinyjs::disable(id = "var.custom") # 重置输入框为默认值 updateNumericInput(session, "mu.custom", value = 0.1) updateNumericInput(session, "var.custom", value = 0.05) } else { shinyjs::enable(id = "mu.custom") shinyjs::enable(id = "var.custom") } }) observeEvent(input$btnQuit, { stopApp() }) } shinyApp(ui, server)
关键修改说明
- 切换到「Default」时,通过
updateNumericInput直接修改输入框的value参数,完成默认值重置 - 保留原禁用逻辑,确保默认模式下输入框不可编辑
- 同步将UI中的英文文本翻译为中文,适配中文使用场景
内容的提问来源于stack exchange,提问作者Laura
相关产品推荐
相关产品推荐

