2017-10-23 3 views
1

Ich baue eine glänzende App, in der eine Abfrage von textInput gemacht wird, wenn der Benutzer auf die Schaltfläche "Suche" klickt. Ich möchte, dass diese Schaltfläche deaktiviert wird, wenn die textInput Box leer ist. Ich benutze shinyjs::toggleState() hier, aber ich kann nicht herausfinden, welche Logik es anwenden muss, um zu sehen, dass das Textfeld leer ist. In meiner unten aufgeführten reproduzierbaren Datei lautet die Logik, die ich einstelle, is.null(input$query). Ich habe auch mit is.na(input$query), length(input$query) == 0 und input$query == '' versucht, alles ohne Erfolg Was sollte ich stattdessen dort setzen?Schaltfläche deaktivieren, wenn der Texteintrag leer ist in Shiny App [R]

Hier ist die app.r Datei:

library(shiny) 
library(shinyjs) 

ui <- fluidPage(
    sidebarLayout(
    sidebarPanel(
     useShinyjs(), 
     textInput(inputId = "query", label = "Enter query:", value = ""), 
     actionButton(inputId = "search", label = "Search", icon = icon("search")) 
    ), 
    mainPanel() 
) 
) 

server <- function(input, output) { 
    observe({ 
    toggleState("search", !is.null(input$query)) 
    }) 
} 

shinyApp(ui = ui, server = server) 
+3

Verwenden 'toggleState ("Suche", geben $ query = "" | is.null (! Eingabe $ query)) ' – Sagar

Antwort

1

so etwas tun?

observe({ 
    if(is.null(input$query) || input$query == ""){ 
     disable("search") 
    } 
    else{ 
     enable("search") 
    } 
    }) 

Per @Sagar können Sie auch tun:

observe({ 
    toggleState("search", input$query != "" | is.null(input$query)) 
}) 

oder

observeEvent(input$query,{ 
    toggleState("search", input$query != "" | is.null(input$query)) 
}) 
+0

Es tut. Vielen Dank! – Phil

Verwandte Themen