Javascript R选择输入:设置输入量的最小值

Javascript R选择输入:设置输入量的最小值,javascript,r,shiny,selectize.js,Javascript,R,Shiny,Selectize.js,在一个闪亮的应用程序中,我有一个selectizeInput和multiple=TRUE,我希望防止用户选择NULL(即,将其留空)。我的目标是确保至少选择一个项目(无论选择哪一个) 我在相反的问题上找到了问题(即限制最大选择数),并进行了检查。不幸的是,似乎没有minItems选项。有没有办法实现我想要的功能 最起码的例子: library(shiny) shinyApp( ui = fluidPage( selectizeInput( inputId = "test

在一个闪亮的应用程序中,我有一个
selectizeInput
multiple=TRUE
,我希望防止用户选择
NULL
(即,将其留空)。我的目标是确保至少选择一个项目(无论选择哪一个)

我在相反的问题上找到了问题(即限制最大选择数),并进行了检查。不幸的是,似乎没有
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
    })
  }

)
库(闪亮)
shinyApp(
ui=fluidPage(
选择输入(
inputId=“testSelect”,
label=“测试”,
选择=字母[1:4],
选定=字母[1],
倍数=真,
#问题:如何在此处指定“minItems”
选项=列表(maxItems=2)
),
逐字输出(“选定”)
),
服务器=功能(输入、输出){

输出$selected似乎是一个悬而未决的问题:#

关于R/Shiny实现,您可以使用
renderUI()
的变通方法

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

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

selected感谢您的接受。请随意投票。或者还有什么可以添加的吗?谢谢,这有助于解决我的问题。唯一可以添加的是:我认为用最后一个非null值替换null更为自然(即,如果您尝试删除“B”,代码将返回“B”,而不是始终返回“A”(选项)[1] )。通过添加到服务器,我实现了以下目标:
nonNull
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)
      )
    })
  }
)