如何在闪亮的应用程序/模块中动态更改wellPanel的背景颜色?

时间:2018-08-08 17:29:50

标签: r shiny

我有一个闪亮的模块,可以在多个wellPanels中组织用户输入元素。

我希望这些面板根据用户是否正确填写了元素来更改其背景;即以空的红色背景开始,然后在他们填写了几个文本输入后更改为绿色背景。

我的代码已经能够验证用户的输入,我只是不知道如何更改wellPanels的背景颜色。

我的代码是这样设置的:

myModuleInput <- function(id) {
  ns <- NS(id)

  tagList(
    wellPanel(
      # Some inputs
    ),
    wellPanel(
      # Some more inputs
    )
  )
}

1 个答案:

答案 0 :(得分:1)

您可以使用shinyjs库来运行JavaScript,以更改孔的颜色,前提是您给它们指定了ID。

js代码为element.style.backgroundcolor = color。 Shinyjs提供runjs()来使用它。不要忘记在用户界面中调用useShinyjs()

完整代码:

# LIBRARIES & SOURCING --------------
library(shiny)
library(shinydashboard)
library(shinyjs)

# UI -----------------
ui <- dashboardPage(title="App Title", 
                    dashboardHeader(disable = TRUE),
                    dashboardSidebar(disable = TRUE),
                    dashboardBody( 
                        useShinyjs(),
                        fluidRow(
                            wellPanel(
                                tags$p("Some text"), 
                                id = "wellPanelId1"
                            )
                        )
))



# SERVER -----------------
server <- function(input, output, session) {

    observe({
        # some event
        runjs(sprintf("
            document.getElementById('%s').style.backgroundColor = '%s';
        ", "wellPanelId1", "#00FF00"))
    })

}

shinyApp(ui = ui, server = server)