javascript - R Shiny 的selectizeInput : set minimum for amount of inputs

标签 javascript r shiny selectize.js

我在 Shiny 的应用程序中有一个带有 multiple = TRUEselectizeInput,我想阻止用户选择 NULL(即,从留空)。我的目标是确保至少有一项被选中(无论是哪一项)。

我找到了 this关于相反问题的问题(即限制最大选择数)我检查了selectize documentation .不幸的是,似乎没有 minItems 选项。有没有办法实现我想要的功能?

最小示例:

library(shiny)
shinyApp(

  ui = fluidPage(
    selectizeInput(
      inputId = "testSelect",
      label = "Test",
      choices = LETTERS[1:4],
      selected = LETTERS[1],
      multiple = TRUE,
      # Problem: how to specify 'minItems' here
      options = list(maxItems = 2)
    ),
    verbatimTextOutput("selected")
  ),

  server = function(input, output) {
    output$selected <- renderPrint({
      input$testSelect
    })
  }

)

最佳答案

似乎是一个悬而未决的问题:# https://github.com/selectize/selectize.js/issues/1228 .

关于您的 R/Shiny 实现,您可以使用 renderUI() 的解决方法。

您将在服务器端构建输入并控制选定的选项。 在服务器端构建输入之前,您可以检查当前值,如果它不满足您的要求,您可以覆盖它:

selected <- input$testSelect
if(is.null(selected)) selected <- choices[1]

可重现的例子:

library(shiny)
choices <- LETTERS[1:4]  
shinyApp(
  ui = fluidPage(
    uiOutput("select"),
    verbatimTextOutput("selected")
  ),
  server = function(input, output) {
    output$selected <- renderPrint({
      input$testSelect
    })

    output$select <- renderUI({
      selected <- input$testSelect
      if(is.null(selected)) selected <- choices[1]
      selectizeInput(
        inputId = "testSelect",
        label = "Test",
        choices = choices,
        selected = selected,
        multiple = TRUE,
        options = list(maxItems = 2)
      )
    })
  }
)

关于javascript - R Shiny 的selectizeInput : set minimum for amount of inputs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51060222/

相关文章:

r - 传单中的 map 标记 Shiny

javascript - 如何计算一个项目在数组中的次数

javascript - 引用已撤销的对象 URL

r - R中的成对交互矩阵

r - 如何在 R 中的组内的两个变量的组合上选择具有特定值的行

r - 有没有办法让这个密度图更好地适应框架?

JavaScript 对象函数未获得引用

javascript - Aurelia-repeat.for json

r - 从 Shiny 的 DT 行选择中添加 react 性排名列表标签

javascript - R/Shiny 中的可拖动折线图