禁用confirmSweetAlert中的确认按钮

禁用confirmSweetAlert中的确认按钮,r,shiny,sweetalert2,shinyjs,shinywidgets,R,Shiny,Sweetalert2,Shinyjs,Shinywidgets,我试图禁用confirmSweetAlert中的确认按钮,除非selectizeInput中有一些输入。似乎有使用Javascript的解决方案,例如swal.disableconfirbutton()和document.getElementsByClassName().disabled=true,但当我在shinyjs::runjs下运行它们时,它们似乎不起作用。有没有解决这个问题的办法?以下是我的示例代码: shinyApp( ui <- fluidPage( action

我试图禁用confirmSweetAlert中的确认按钮,除非selectizeInput中有一些输入。似乎有使用Javascript的解决方案,例如
swal.disableconfirbutton()
document.getElementsByClassName().disabled=true
,但当我在
shinyjs::runjs
下运行它们时,它们似乎不起作用。有没有解决这个问题的办法?以下是我的示例代码:

shinyApp(
  ui <- fluidPage(
    actionButton("button", "Show Sweet Alert!")
  ),

  server <- function(input, output, session) {
    observeEvent(input$button, {
      confirmSweetAlert(
        session = session,
        inputId = "letterSelect",
        title = "Select a Letter!",
        type = "info",
        text = tags$div(
          h4("Please select from the options below then press 'Confirm'.", align = "center"),
          selectizeInput(
            inputId = "letters",
            label = NULL,
            choices = c("A", "B", "C"),
            options = list(placeholder = "None selected."),
            multiple = TRUE,
            width = '100%')
        ),
        closeOnClickOutside = FALSE
      )      
    })
  }

)
shinyApp(
ui这似乎有效:

library(shiny)
library(shinyWidgets)
library(shinyjs)

shinyApp(
  ui <- fluidPage(
    useShinyjs(),
    actionButton("button", "Show Sweet Alert!")
  ),

  server <- function(input, output, session) {
    observeEvent(input$button, {
      confirmSweetAlert(
        session = session,
        inputId = "letterSelect",
        title = "Select a Letter!",
        type = "info",
        text = tags$div(
          h4("Please select from the options below then press 'Confirm'.", align = "center"),
          selectizeInput(
            inputId = "letters",
            label = NULL,
            choices = c("A", "B", "C"),
            options = list(placeholder = "None selected."),
            multiple = TRUE,
            width = '100%')
        ),
        closeOnClickOutside = FALSE
      )
      runjs("Swal.getConfirmButton().setAttribute('disabled', '');")
    })

    observe({
      if(is.null(input$letters)){
        runjs("Swal.getConfirmButton().setAttribute('disabled', '');")
      }else{
        runjs("Swal.getConfirmButton().removeAttribute('disabled');")
      }
    })
  }

)
库(闪亮)
图书馆(shinyWidgets)
图书馆(shinyjs)
shinyApp(

ui非常感谢您的回复!我运行了这段代码,但仍然没有收到禁用的“确认”按钮。我用上面提到的其他变体替换了JS代码,但它似乎仍然不起作用。@m.yoshih您使用的ShinyWidget版本是什么?感谢您指出这一点;我有版本0.4.8。它现在与更新的版本一起工作尽管Selectize下拉菜单出现在按钮后面,但仍然是0.5.1版本的版本。有没有办法绕过按钮后面的下拉菜单?我想用“cancel”按钮做同样的事情。所以我在这里写的是在sweet alert上禁用cancel按钮,以防其他人需要它.setAttribute('disabled','');”)