闪亮的应用程序具有以下元素:
- 一个
numericInput
值在 0 到 3 之间的字段 - 一个
uiOutput
包含三个隐藏textInput
字段 - 一
actionButton
我想要实现的是单击按钮后show
的隐藏字段。textInput
显示的字段数取决于在下面numericInput
的全功能代码中选择的数字是否成功;但是,有一个问题我似乎无法找到解决方案。例如,如果我选择3
并单击按钮,则会出现 3 个隐藏textInput
字段(耶!),但如果我立即选择一个低于的数字3
并单击按钮,不需要的字段仍然存在。我怎样才能做到这一点?谢谢
library(shiny)
library(shinyjs)
ui <- fluidPage(
useShinyjs(),
numericInput(inputId = "num", label = "How many inputs do you want to show?", value = 1, min = 1, max = 3),
uiOutput(outputId = "out"),
actionButton(inputId = "go", label = "Click me!")
)
server <- function(input, output){
output$out <- renderUI({
numinputs <- lapply(1:3, function(i){
textInput(inputId = paste0("txt", i), label = paste0("Text input ", i))
})
shinyjs::hidden(numinputs)
})
observeEvent(eventExpr = input$go, handlerExpr = {
for(i in seq(input$num)){
shinyjs::show(id = paste0("txt", i))
}
})
}
shinyApp(ui = ui, server = server)