首页 > 解决方案 > selectInput 类别选择

问题描述

我有一个这样的 selectInput 代码

selectInput('x4', 'X4', choices = list(
     Eastern = c(`New York` = 'NY', `New Jersey` = 'NJ'),
  Western = c(`California` = 'CA', `Washington` = 'WA')
), selectize = FALSE)

在此处输入图像描述

是否可以启用类别部分,例如Eastern, Western。如果用户选择了东部,则必须加载两个值(新泽西和纽约)。可能吗 ?

标签: shiny

解决方案


library(shiny)

onInitialize <- "
function(){
  var select = this.$input[0];
  this.$dropdown_content.on('mousedown', function(e){
    e.preventDefault(); 
    return false;
  }).on('click', '.optgroup-header', function(e){
    var options = $(this).parent().find('.option');
    var items = [];
    options.each(function(i, opt){items.push($(opt).data('value'));});
    var selections = select.selectize.items;
    select.selectize.setValue(items.concat(selections));
  });
}
"

shinyApp(
  ui = fluidPage(
    selectizeInput("state", "Choose a state:",
                list(`East Coast` = list("NY", "NJ", "CT"),
                     `West Coast` = list("WA", "OR", "CA"),
                     `Midwest` = list("MN", "WI", "IA")),
                multiple = TRUE, 
                options = list(
                  onInitialize = I(onInitialize)
                )
    )
  ),
  server = function(input, output){}
)

在此处输入图像描述


推荐阅读