我正在寻找一种在我的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")
})
}
))