I'm trying to use updateSelectizeInput to update the selected options using a textInput. I've tried pasting the input but only the first value was updated. I'd like to enter "A", "B", "C" as text so that the selectizeInput also reflects these values. Right now only "A" is shown in the select input box.
Example:
Code:
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("text1", label = "Type (A, B, C)")
),
mainPanel(
selectizeInput("select1", choices = c("A", "B", "C"), label = "Select", multiple = TRUE,
options = list(
delimiter = ',',
create = I("function(input, callback){
return {
value: input,
text: input
};
}")
)),
textOutput("select_output")
)
)
)
server <- function(input, output, session) {
observeEvent(input$text1, {
updateSelectizeInput(session, "select1", selected = paste(input$text1))
})
output$select_output <- renderText({
input$select1
})
}
shinyApp(ui, server)
CodePudding user response:
You need to pass a vector to selected
in updateSelectizeInput
, input$text1
is a string.
Try -
library(shiny)
ui <- fluidPage(
sidebarLayout(
sidebarPanel(
textInput("text1", label = "Type (A, B, C)")
),
mainPanel(
selectizeInput("select1", choices = c("A", "B", "C"), label = "Select", multiple = TRUE,
options = list(
delimiter = ','
)),
textOutput("select_output")
)
)
)
server <- function(input, output, session) {
observeEvent(input$text1, {
updateSelectizeInput(session, "select1", selected = unlist(strsplit(input$text1, ',\\s ')))
})
output$select_output <- renderText({
input$select1
})
}
shinyApp(ui, server)