Thanks to @daattli for pointing me in the right direction and letting me know how to use js to change a shiny element.
I applied a solution to change the sliderInput and selectInput to switch different values (and lengths). I think this function should be implemented in brilliant one that uses ionRangeSlider .
Please improve my codes if you think there is a better way to implement it, as this is my first js script.
library(shiny) values <- list(A = c('A1', 'A2', 'A3'), B = c('B1', 'B2', 'B3', 'B4')) ui <- shinyUI(bootstrapPage( selectInput('selection', 'selection', c('A', 'B'), 'A'), uiOutput('selectUI'), sliderInput(inputId = "target", label = "Target", min = 0, max = length(values$A) - 1, step = 1, value = length(values$A) - 1), verbatimTextOutput('summary') )) server <- shinyServer(function(input, output, session) { output$summary <- renderPrint({ print(input$target) print(values[[input$selection]][input$target + 1]) }) output$selectUI <- renderUI({ sel_values <- paste(paste0('"', values[[input$selection]], '"'), collapse = ',') print(sel_values) list( (HTML( sprintf(' <script type="text/javascript"> $(document).ready(function() { var vals = [%s]; $(\'#target\').data(\'ionRangeSlider\').update( {values:vals, min: 0, max: %s, from:%s}) }) </script> ', sel_values, length(values[[input$selection]]) - 1, length(values[[input$selection]]) - 1))) )} )} ) shinyApp(ui = ui, server = server)
source share