单击 actionButton 后将 css 添加到元素

Adding css to an element after clicking on actionButton

我正在尝试使用 shiny 自定义登录页面。我已经包含了一个像这样的文本输入 textInput("login_username", "Username") 并且我想要做的是当 Username 不在数据库中时 output$login_username 的边框将变成红色。那么如何在事件后将 CSS 添加到元素。

假设这是我的 if 句子:

if(is_validate){ /* action to do */ }
else { output$login_username <- /* action that i'm looking for */ }

这是如何在 shinyjs 包的帮助下添加颜色的小示例,我还在右下角添加了一条消息通知:

library(shiny)
library(shinyjs)

allowedusers <- c("Pork_Chop","BKenz")
jsCode <- "shinyjs.TextCol = function(params){$('#login_username').css('background', params);}"

# For border color use below
jsCode <- "shinyjs.TextCol = function(params){$('#login_username').css('border-color', params);}"

ui <- fluidPage(
  useShinyjs(),
  extendShinyjs(text = jsCode),
  textInput("login_username", "Username"),
  actionButton("Login","Login")
)

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

  observeEvent(input$Login,{
    req(input$login_username!="")

    if(!(input$login_username %in% allowedusers)){
      js$TextCol("red")
      showNotification("user doesnt exists",type="warning")
    }
    else{
      js$TextCol("white")
    }
  })
}

shinyApp(ui = ui, server = server)