Die glänzende Anwendung hat die folgenden Elemente:anzeigen/verbergen Eingänge basierend auf numericInput und actionButton
- eine
numericInput
Feld mit Werten zwischen 0 und 3 - einem
uiOutput
den drei verstecktentextInput
Felder enthält - eine
actionButton
Was möchte ich erreichen möchte, ist die versteckte Felder nach einem Klick klicken. Die Anzahl der angezeigten Felder hängt von der Nummer ab, die in der numericInput
voll funktionsfähigen Code unter erreicht wird; Es gibt jedoch ein Problem, für das ich keine Lösung finden kann. Zum Beispiel, wenn ich 3
auswähle und auf den Knopf klicke, erscheinen die 3 versteckten textInput
Felder (yay!), Aber wenn ich dann sofort eine Zahl niedriger als 3
auswähle und auf den Knopf klicke, bleiben die unerwünschten Felder immer noch. Wie kann ich das erreichen? Danke
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)
Ich schätze die Hilfe sehr. – SavedByJESUS
Ich habe in meiner Antwort nicht viel erklärt. Hast du verstanden, was wir dort gemacht haben? 'hidden()' initialisiert nur 'textInput()' als unsichtbares Objekt. 'show()' und 'hide()' sind diejenigen, die auf den Benutzer reagieren. – user5029763
habe ich ganz gut verstanden. Was ich nicht herausfinden konnte (vor Ihrer Antwort), war die Art, wie Sie die 'n'-Variable und die' lapply'-Schleife einrichten. Sehr geschickt gemacht! – SavedByJESUS