禁用fileInput

时间:2019-12-03 05:24:44

标签: r shiny

我的闪亮应用中有一个selectizeInput和一个fileInput

我要保持fileInput处于禁用状态,直到未在selectizeInput中选择某个值。

我还希望每次用户单击fileInput时都会出现弹出消息选择一个值。 我该怎么办。

1 个答案:

答案 0 :(得分:0)

正如其他人所提到的,shinyjs包在这里很有用。您可以使用enabledisabletoggleState

library(shiny)
library(shinyjs)

ui = fluidPage(
    shinyjs::useShinyjs(),
    selectizeInput("selector", label="Choose 2:", multiple=TRUE,
                   choices=letters[1:5], selected=letters[1:5]),
    fileInput("file_inputer", label="upload file")#,
    # dataTableOutput('table') 
)

server = function(input, output) {
    observe({
        shinyjs::toggleState("file_inputer", length(input$selector) %in% 0:4)
    })

    observeEvent(input$file_inputer, {
        showModal(modalDialog(
           title="Do you want a header row?",
           selectInput("option_selector", label="Choose an option",
                       choices=c("option 1", "option 2", "option 3")),
           footer = tagList(actionButton("read_file", "Read File"),
                            modalButton("Cancel")
           )
        ))
    })

    observeEvent(input$read_file, {
        # do something with your option value
        removeModal()
    })

}

# Run the application 
shinyApp(ui = ui, server = server)