I have multiple action buttons, on which i want to show different select Inputs and I want to know last clicked button id, how can I do that? When I use
which(lapply(c(1:10), function(i) { input[[paste0("ActionButton", i)]]}) == TRUE)
It shows me all button which were clicked, however I want to know which one was the last in order to enable click once again on previous buttons. How can I do that? I am new in shiny and not sure if understand all reactive/isolate issue so I would be greateful for any hints.
Advertisement
Answer
You can do it by adding JS
smthing like
$(document).on('click', '.needed', function () { Shiny.onInputChange('last_btn',this.id); });
Example ( add class needed
to btn if you want to control not all btn)
ui <- shinyUI(fluidPage( titlePanel("Track last clicked Action button"), tags$head(tags$script(HTML("$(document).on('click', '.needed', function () { Shiny.onInputChange('last_btn',this.id); });"))), sidebarLayout( sidebarPanel( actionButton("first", "First",class="needed"), actionButton("second", "Second",class="needed"), actionButton("third", "Third",class="needed"), actionButton("save", "save"), selectInput("which_","which_",c("first","second","third")) ), mainPanel( textOutput("lastButtonCliked") ) ) )) server <- shinyServer(function(input, output,session) { observeEvent(input$save,{ updateSelectInput(session,"which_",selected = input$last_btn) }) output$lastButtonCliked=renderText({input$last_btn}) }) # Run the application shinyApp(ui = ui, server = server)