Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

322
Vistas
¿Cómo impedir que el usuario acceda a otras pestañas en Shiny a menos que el usuario haga clic en un botón?

Mi pregunta es similar a Shiny, ¿cómo bloquear al usuario para que no acceda a una pestaña?

Pero lo que necesito aquí es: -Bloquear otras pestañas a menos que el usuario haga clic en un botón de enviar -Mover automáticamente a la otra pestaña una vez que se haga clic en ese botón de enviar. Aquí hay un código de ejemplo

 library(shiny) ui <- shinyUI(navbarPage( "", tabPanel( h1("Tab1"), value = "nav1", mainPanel( br(), h2("The user must press this button to access the other tab."), br(), shiny::actionButton('button', 'press the button', onclick = "$(tab).removeClass('disabled')") ) ), tabPanel( h1("Tab2"), value = "nav2", uiOutput("tab2contents") ), tags$script( ' var tab = $(\'a[data-value="nav2"]\').parent().addClass("disabled"); $(function(){ $(tab.parent()).on("click", "li.disabled", function(e) { e.preventDefault(); return false; }); }); ' ) )) server <- shinyServer(function(input, output) { }) # Run the application shinyApp(ui = ui, server = server)

En el código anterior, la segunda pestaña está bloqueada a menos que se haga clic en el botón, pero ¿cómo puedo actualizar esto aún más para que una vez que se haga clic en el botón, el usuario sea llevado automáticamente a la segunda pestaña?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Dado que coloca el tabPanel en una navbarPage , debe usar updateNavbarPage . Y debe darle a navbarPage una id .

 library(shiny) ui <- shinyUI(navbarPage( "", id = "mainpage", tabPanel( h1("Tab1"), value = "nav1", mainPanel( br(), h2("The user must press this button to access the other tab."), br(), shiny::actionButton('button', 'press the button', onclick = "$(tab).removeClass('disabled')") ) ), tabPanel( h1("Tab2"), value = "nav2", uiOutput("tab2contents") ), tags$script( ' var tab = $(\'a[data-value="nav2"]\').parent().addClass("disabled"); $(function(){ $(tab.parent()).on("click", "li.disabled", function(e) { e.preventDefault(); return false; }); }); ' ) )) server <- shinyServer(function(input, output) { observeEvent(input$button, { updateNavbarPage(inputId = "mainpage", selected = "nav2") }, ignoreInit = TRUE) }) # Run the application shinyApp(ui = ui, server = server)
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda