我有一个闪亮的模块,可以在多个wellPanels中组织用户输入元素。
我希望这些面板根据用户是否正确填写了元素来更改其背景;即以空的红色背景开始,然后在他们填写了几个文本输入后更改为绿色背景。
我的代码已经能够验证用户的输入,我只是不知道如何更改wellPanels的背景颜色。
我的代码是这样设置的:
myModuleInput <- function(id) {
ns <- NS(id)
tagList(
wellPanel(
# Some inputs
),
wellPanel(
# Some more inputs
)
)
}
答案 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)