我正在构建一个Shiny应用程序,用户必须以radioButtons、numericInputs和textInputs的形式完成几个必填问题才能生成输出。为了强调哪些问题仍然需要完成,我希望标签文本最初呈现为";红色";,但随后切换到"0";黑色";一旦值已经被选择和/或输入到窗口小部件中。
library(shiny)
ui <- fluidPage(
sidebarPanel(
radioButtons("my_radio_button", tags$p("Choose an Option", style = "color:red;"), choices = c("Option 1", "Option 2"), selected = character(0)),
)
)
server <- function(input, output, session) {
observeEvent(input$val, {
x <- input$my_radio_button
if (x == "Option 1" | x == "Option 2") {
## MAKE "Choose an Option" LABEL TURN BLACK
}
})
}
shinyApp(ui, server)
我在堆栈交换(R shing conditionally change numericInput background color(中发现了这个例子,他们有条件地更改了小部件的背景颜色,但我对编程了解不够,无法修改它来更改标签文本。
如有任何帮助,我们将不胜感激。谢谢
您可以使用shinyjs
- 将
shinyjs::useShinyjs()
添加到ui
的开头 - 将
id
添加到radioButtons
ui元素的label
参数中。我在下面的示例中使用了r_label
- 观察
input$my_radio_button
是否发生更改,从而触发对shinyjs::html()
的调用
下面的完整代码:
library(shiny)
library(shinyjs)
ui <- fluidPage(
shinyjs::useShinyjs(),
sidebarPanel(
radioButtons("my_radio_button",
label=tags$p("Choose an Option", style = "color:red;", id="r_label"),
choices = c("Option 1", "Option 2"), selected = character(0)),
)
)
server <- function(input, output, session) {
observeEvent(input$my_radio_button, {
shinyjs::html("r_label", "<p style='color:black'>Choose an Option</p>")
})
}
shinyApp(ui, server)