考虑以下代码:
library(shiny)
ui <- shinyUI(
fluidPage(
column(12,
numericInput("test", h5("Test value:"), value = 500, min = 0, max = 10000, step = 100, width = '200px')
)
)
)
server <- function(input, output) {
}
shinyApp(ui = ui, server = server)
我想根据无效的用户输入将 numericInput 小部件的背景颜色更改为红色。因此,如果用户输入文本或超出最小和最大范围的值,则小部件应为红色。
请注意,我无法使用使用 CSS 文件的解决方案,例如:
input:invalid {
background-color: #FFCCCC !important;
}
原因是,如果用户输入的值不是 numericInput 语句中“step”值的倍数,则背景将变成红色(请参阅:R闪亮的数字输入步骤和最小值交互 https://stackoverflow.com/questions/50313005/r-shiny-numericinput-step-and-min-value-interaction了解详情)。
那么,如何根据我定义的验证规则有条件地设置样式来实现如上所述的我自己的手动验证呢?也就是说,我可以应用任何规则来说明什么是有效的,例如:
- if (is.numeric(input$test))
- 如果(输入$测试> = 0)
- if (输入$test