我有一個multiple = TRUE的selectinput,一旦用戶選擇了多個選項,我需要禁用selectinput。但是一旦我選擇了第一個選項,selectinput 就會被禁用,并且不允許我選擇第二個選項。我使用了以下代碼。
library(shiny)
library(shinyjs)
ui <- fluidPage(
br(),
useShinyjs(),
fluidRow(
column(
width = 6,
selectInput(inputId = "check1", label = "Choose", choices = c("choice A","choice B","choice C"),multiple = T),
verbatimTextOutput(outputId = "res1")
)
)
)
server <- function(input, output, session) {
flag_lifecycle <- reactiveValues(val = "Yes")
output$res1 <- renderPrint({
input$check1
})
observeEvent(input$check1, {
shinyjs::disable("check1")
})
}
shinyApp(ui = ui, server = server)
我得到的輸出

這里,只有在選擇多項選擇時,才會禁用SelectInput。

任何幫助在這里表示贊賞。提前致謝!
uj5u.com熱心網友回復:
在當前設定中,您實際上并不知道用戶何時完成了選擇。
考慮各種場景——
- 如果您在第一次選擇后禁用,則用戶無法選擇 2 或 3 個值。
- 如果在第二次選擇后禁用,則用戶無法選擇 3 個值。
- 如果您在 3rd 之后禁用,那么如果用戶只想選擇 1 個值怎么辦?
您永遠不會知道何時根據值的長度禁用。我認為更好的選擇是提供一個actionButton供用戶在完成選擇后提交。
library(shiny)
library(shinyjs)
ui <- fluidPage(
br(),
useShinyjs(),
fluidRow(
column(
width = 6,
selectInput(inputId = "check1", label = "Choose",
choices = c("choice A","choice B","choice C"), multiple = T),
verbatimTextOutput(outputId = "res1"),
actionButton('submit', 'Done')
)
)
)
server <- function(input, output, session) {
flag_lifecycle <- reactiveValues(val = "Yes")
output$res1 <- renderPrint({
input$check1
})
observeEvent(input$submit, {
shinyjs::disable("check1")
})
}
shinyApp(ui = ui, server = server)

轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/341304.html
