如何禁用selectInput()
下拉菜单中的项目?
例如;
library(shiny)
ui <- fluidPage(selectInput("id1","Select",choices=c("A","B","C")))
server <- function(input, output) {}
shinyApp(ui, server)
说,出于某种原因,由于某些逻辑,无法选择选项 C 。我希望用户能够看到所有选项,但已禁用/取消选择 C 选项。
答案 0 :(得分:2)
您可以使用shinyWidgets软件包中的pickerInput
来完成此操作:
library(shiny)
library(shinyWidgets)
ui <- fluidPage(
pickerInput(
inputId = "id1",
label = "Select :",
choices = c("A", "B", "C"),
multiple = FALSE,
choicesOpt = list(
disabled = c("A", "B", "C") %in% c("C")
)
),
verbatimTextOutput(outputId = "result")
)
server <- function(input, output) {
output$result <- renderPrint(input$id1)
}
shinyApp(ui, server)
在服务器上也可以这样做,请参见?updatePickerInput
答案 1 :(得分:-1)
我相信只有标准的光泽才能做到。如果知道,您可以尝试应用一些CSS / JS魔术(例如,将无法选择的项目变成红色,如果用户仍然选择它,则向用户发送消息,或者您可以直接禁用使用JS / CSS对其进行点击,不确定,请参见sendCustomMessage()
)。
另一种选择是在需要时使用updateSelectInput()
从下拉列表中丢弃不需要的项目。
更新:
我对此进行了快速搜索-我可以看到它可以使用html选项disabled
,例如
<select>
<option value="volvo" disabled>Volvo</option>
<option value="saab">Saab</option>
<option value="vw">VW</option>
<option value="audi">Audi</option>
</select>
您需要做的就是在服务器上生成闪亮的selectInput
(可能是renderUI()
),并将该disabled
选项添加到您需要禁用的元素中