当用户选择一个选项时,我如何动态更改R Shiny radioButtons小部件的标签文本颜色



我正在构建一个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

  1. shinyjs::useShinyjs()添加到ui的开头
  2. id添加到radioButtonsui元素的label参数中。我在下面的示例中使用了r_label
  3. 观察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)

相关内容

  • 没有找到相关文章

最新更新