我正在寻找一种在我的ShinyUI元素上实现禁用/启用功能的方法。 Here xiaodaigh给出了如何禁用/启用actionButton的提示(请参见下图),这是我想要的结果,但是该代码无法解决我测试过的其他gui元素(例如numericInput)。

(我知道conditionalPanel功能,但这不是我想要的效果。)

我非常感谢任何建议,尤其是因为我对JavaScript不太熟悉。

最佳答案

您在问题中链接的代码不适用于其他输入小部件的原因是,因为不同的输入小部件需要不同的JavaScript调用才能被禁用。另一个问题是,当Shiny创建输入元素时,有时您提供的ID是实际HTML输入标签的ID,而有时该ID被赋予输入标签的容器。

shinyjs程序包具有disable函数,该函数可以按原样使用任何 Shiny 的输入。免责声明:我写了那个包裹。

这是您按照要求禁用numericInput的方法

library(shiny)
runApp(shinyApp(
  ui = fluidPage(
    shinyjs::useShinyjs(),
    numericInput("test", "Test", 5),
    actionButton("submit", "Choose")
  ),
  server = function(input, output, session) {
    observeEvent(input$submit, {
      shinyjs::disable("test")
    })
  }
))

10-08 08:09