2017-10-23 3 views
1

사용자가 "검색"작업 버튼을 클릭 할 때 textInput의 검색어가 작성되는 반짝이는 앱을 만들고 있습니다. textInput 상자가 비어 있으면 해당 버튼을 비활성화하고 싶습니다. 여기서 shinyjs::toggleState()을 사용하고 있지만 텍스트 상자가 비어 있는지 확인하기 위해 어떤 로직을 적용해야하는지 알 수 없습니다. 아래에 재현 가능한 파일에 논리를 넣으면 is.null(input$query)입니다. 또한 is.na(input$query), length(input$query) == 0input$query == ''으로 모두 시도했지만 성공하지 못했습니다. 대신 무엇을 넣어야합니까? 이 할 같은반짝이는 앱에서 textinput이 비어있을 때 작업 버튼 사용 안 함 [R]

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

사용은'toggleState는 ("검색", 입력 $ 쿼리 = ""| is.null을 (! 입력 $ 쿼리))' – Sagar

답변

1

뭔가 :

여기에 app.r 파일입니까?

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

@Sagar 당으로 당신은 또한 수행 할 수 있습니다

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

또는

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

입니다. 감사! – Phil