Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 条件性反光板盒状态/样式_R_Shiny_Shinydashboard_Shinyjs - Fatal编程技术网

R 条件性反光板盒状态/样式

R 条件性反光板盒状态/样式,r,shiny,shinydashboard,shinyjs,R,Shiny,Shinydashboard,Shinyjs,我想根据一些输入更改shinydashboard框的状态/样式,基本上是向用户发出警告信号(参见下面的示例)。实际上,我已经通过使用shinyjs及其extendShinyjs功能解决了我的问题。但我想理解为什么我最初的尝试——基于shinyjs的removeClass/addClass函数——失败了。 所以,我的问题是:为什么下面示例应用程序中第二个框中的方法失败了 运行应用程序时,只需输入大于12;)的值 库(闪亮) 图书馆(shinydashboard) 图书馆(shinyjs) jsco

我想根据一些输入更改shinydashboard框的状态/样式,基本上是向用户发出警告信号(参见下面的示例)。实际上,我已经通过使用shinyjs及其extendShinyjs功能解决了我的问题。但我想理解为什么我最初的尝试——基于shinyjs的removeClass/addClass函数——失败了。 所以,我的问题是:为什么下面示例应用程序中第二个框中的方法失败了

运行应用程序时,只需输入大于12;)的值

库(闪亮)
图书馆(shinydashboard)
图书馆(shinyjs)
jscode
library(shiny)
library(shinydashboard)
library(shinyjs)

jscode <- "
shinyjs.warningBox = function(boxid) {
$('#' + boxid).parent().removeClass('box-success').addClass('box-warning');
};
shinyjs.successBox = function(boxid) {
$('#' + boxid).parent().removeClass('box-warning').addClass('box-success');
}
"

dbBody <- dashboardBody(
    useShinyjs(),
    extendShinyjs(text = jscode),

    box(
        id = "input-box-1",
        title = "Here it works", 
        status = "success",
        solidHeader = TRUE,

        numericInput(
            inputId = "n1", 
            label = "Do not enter anything larger than 12", 
            value = 10)
    ),

    box(
        id = "input-box-2",
        title = "Here it doesn't", 
        status = "success",
        solidHeader = TRUE,

        numericInput(
            inputId = "n2", 
            label = "Do not enter anything larger than 12", 
            value = 10)
    )
)

server <- function(input, output) {
    observe({
        if (input$n1 > 12) js$warningBox("input-box-1")
        else js$successBox("input-box-1")
    })

    observe({
        selector <- "$('#input-box-2').parent()"
        if (input$n2 > 12) {
            shinyjs::removeClass(
                selector = selector, class = "box-success")
            shinyjs::addClass(
                selector = selector, class = "box-warning")
        } else {
            shinyjs::removeClass(
                selector = selector, class = "box-warning")
            shinyjs::addClass(
                selector = selector, class = "box-success")
        }
    })
}

shinyApp(
    ui = dashboardPage(
        dashboardHeader(title = "Box styles"),
        dashboardSidebar(),
        dbBody
    ),
    server = server
)