You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在R Shiny模态窗口中如何仅禁用单个输入组件?

实现编辑模式下文本输入框不可编辑的方案

要实现点击“Edit Data”时textInput可见但不可编辑,仅允许修改numericInput,可以通过以下两步调整代码:

  1. 在编辑模态框的textInput中添加disabled = TRUE参数,禁用输入功能
  2. 调整更新逻辑,不再从输入框读取文本内容(避免无意义的赋值)

修改后的完整代码如下:

library(shiny)

ui <- fluidPage(
  titlePanel("Example Shiny App"),
  sidebarLayout(
    sidebarPanel(
      actionButton("add_data_btn", "Add Data"),
      actionButton("edit_data_btn", "Edit Data")
    ),
    mainPanel(
      textOutput("text_output"),
      textOutput("numeric_output")
    )
  )
)


server <- function(input, output, session) {
  
  saved_text <- reactiveVal(NULL)
  saved_numeric <- reactiveVal(NULL)
  
  observeEvent(input$add_data_btn, {
    showModal(modalDialog(
      textInput(inputId = "text_input", label = "Enter Text"),
      numericInput(inputId = "numeric_input", label = "Enter Number 1-10", value = 1, min = 1, max = 10),
      footer = tagList(
        actionButton("save_btn", "Save")
      )
    ))
  })
  
  
  observeEvent(input$save_btn, {
    saved_text(input$text_input)
    saved_numeric(input$numeric_input)
    removeModal()
  })
  
  
  observeEvent(input$edit_data_btn, {
    showModal(modalDialog(
      # 添加disabled = TRUE禁用文本输入框
      textInput("text_input", "Enter Text", value = saved_text(), disabled = TRUE),
      numericInput("numeric_input", "Enter Number 1-10", value = saved_numeric(),  min = 1, max = 10),
      footer = tagList(
        actionButton("update_btn", "Update Data")
      )
    ))
  })
  
  
  observeEvent(input$update_btn, {
    # 不再更新saved_text,仅更新数值内容
    saved_numeric(input$numeric_input)
    removeModal()
  })
  
  
  output$text_output <- renderText({
    saved_text()
  })
  
  
  output$numeric_output <- renderText({
    saved_numeric()
  })
}

shinyApp(ui, server)

补充说明

如果你的Shiny版本较旧(低于1.6.0),textInput可能不支持disabled参数,此时可以用tags$input手动构建禁用的文本框:

tags$input(type = "text", class = "form-control", id = "text_input", value = saved_text(), disabled = "disabled")

内容的提问来源于stack exchange,提问作者Harry Kalsted

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 11:27:11