光沢のあるアプリには次の要素があります。
numericInput
0 ~ 3 の値を持つ1 つのフィールド- 3つ
uiOutput
の隠しtextInput
フィールドを含むもの - 1
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)