Shiny多选输入实现重复选择选项的技术咨询
解决Shiny多选下拉可重复选择同一选项的问题
我太懂这个困扰了——明明开了hideSelected = FALSE让已选选项保持可见,但就是没法重复点击选择,想要生成像A,B,B,B,A,A,C这种带重复值的结果确实有点棘手。其实你说的没错,selectize.js本身就支持这个功能,只是这个配置项在文档里藏得比较深,我来给你直接上解决方案:
核心配置:启用allowDuplicates
在Shiny的selectizeInput里,只需要通过options参数传入selectize.js的allowDuplicates = TRUE配置,再配合hideSelected = FALSE,就能实现重复选择同一选项的需求。
完整示例代码
library(shiny) ui <- fluidPage( selectizeInput( inputId = "repeat_select", label = "支持重复选择的多选下拉框", choices = c("A", "B", "C"), multiple = TRUE, options = list( allowDuplicates = TRUE, # 关键:允许重复选项 hideSelected = FALSE # 让已选选项保持可见 ) ), # 实时展示选中的结果 verbatimTextOutput("selected_result") ) server <- function(input, output, session) { output$selected_result <- renderPrint({ input$repeat_select }) } shinyApp(ui, server)
效果说明
运行这个示例后,你可以反复点击同一个选项(比如连续点B三次),最终的输入值就会包含重复项,完全符合你需要的A,B,B,B,A,A,C这类格式。
补充说明
allowDuplicates是selectize.js的原生配置项,用于允许添加重复的条目到选中列表中。之前你没在文档里找到它可能是因为它没有被放在最显眼的位置,但确实是官方支持的功能,配合hideSelected = FALSE就能完美实现你的需求。
内容的提问来源于stack exchange,提问作者M.Dubel
相关产品推荐
相关产品推荐

