问题是当input$select_box_input/input$radio_button_input 小部件初始化时,正在触发observeEvent 禁用check_buttons 小部件。您可以使用observeEvent 的ignoreInit 参数绕过此行为:
忽略初始化
如果为 TRUE,则在首次创建/初始化此 observeEvent 时,忽略 handlerExpr(第二个参数),无论它是否应该运行。默认值为假。查看详情。
实现行为的最小示例:
library(shiny)
library(shinyjs)
shinyApp(
shinyUI(
fluidPage(
shinyjs::useShinyjs(),
actionButton('go', 'go'),
radioButtons('radio_button_input', 'radio', choices = c('a','b')),
checkboxInput('select_box_input', 'check', value=TRUE),
checkboxGroupInput('check_buttons', 'boxes', choices = c('1','2'))
)
),
shinyServer(function(input, output, session) {
observeEvent(input$go, {
shinyjs::enable("check_buttons")
})
observeEvent({
input$radio_button_input
input$select_box_input
}, {
shinyjs::disable("check_buttons")
}, ignoreInit = TRUE)
})
)