2016-07-05 8 views
1

In R/Shiny möchte ich eine tooltip hinzufügen, um den Benutzer zu informieren, dass eine Schaltfläche deaktiviert ist, da Pflichtfelder nicht ausgefüllt werden.Tooltip zu deaktivierter Taste in Shiny hinzufügen?

Ich kann eine Tooltip mit dem ShinyBS Paket anzeigen, aber es scheint nicht zu funktionieren, wenn die Schaltfläche deaktiviert ist. Unten ist ein minimales Arbeitsbeispiel.

Gibt es eine einfache Lösung, um einen Tooltipp für eine deaktivierte Schaltfläche in Shiny zu erhalten?

ui.R

library(shinyBS) 
library(shiny) 
library(shinyjs) 


shinyUI(pageWithSidebar(
headerPanel("actionButton test"), 
sidebarPanel(
numericInput("n", "N:", min = 0, max = 100, value = 50), 
br(), 
actionButton("goButton", "Disabled!"), 
actionButton("goButton2", "Go!"), 
bsTooltip("goButton", "Tooltip broken", placement = "bottom", trigger = "hover", 
      options = NULL), 
bsTooltip("goButton2", "Tooltip works", placement = "bottom", trigger = "hover", 
      options = NULL) 
), 
mainPanel(useShinyjs(), 
verbatimTextOutput("nText") 
) 
)) 

server.R

library(shiny) 
library(shinyjs) 
library(shinyBS) 

shinyServer(function(input, output,session) { 

ntext <- eventReactive(input$goButton, { 
input$n 
}) 

shinyjs::disable("goButton2") 

output$nText <- renderText({ 
ntext() 
}) 
}) 

Antwort

5

Dies ist ein Weg, um Ihr Problem zu lösen, indem Sie den Titel zu Ihrem Knöpfen statt:

rm(list=ls()) 
library(shinyBS) 
library(shiny) 
library(shinyjs) 

ui <- pageWithSidebar(
    headerPanel("actionButton test"), 
    sidebarPanel(numericInput("n", "N:", min = 0, max = 100, value = 50), 
    tags$div(style="display:inline-block",title="Tooltip broken",actionButton("goButton", "Disabled!")), 
    tags$div(style="display:inline-block",title="Tooltip works",actionButton("goButton2", "Go!"))  
), 
    mainPanel(useShinyjs(), 
      verbatimTextOutput("nText") 
) 
) 

server <- shinyServer(function(input, output,session) { 

    ntext <- eventReactive(input$goButton, {input$n}) 
    shinyjs::disable("goButton2") 
    output$nText <- renderText({ntext()}) 

}) 
shinyApp(ui = ui, server = server) 

enter image description here

+0

Danke fo Die Lösung - ist es nur ich oder gibt es eine gelegentliche Verzögerung bei der Anzeige des Tooltips mit diesem Ansatz? – Iain

+0

Ja, es wäre eine Verzögerung, Sie können dies mit benutzerdefinierten 'JS' überschreiben, aber ich denke nicht, dass es notwendig ist –

Verwandte Themen