2016-10-21 5 views
2

나는 여러 가지 선택 버튼을 가지고 있는데, 다른 선택 입력을 보여주고 싶고 마지막으로 클릭 한 버튼의 id를 알고 싶습니다. 어떻게 할 수 있습니까? 내가반짝이는 - 마지막으로 클릭 한 버튼 id

which(lapply(c(1:10), function(i) { input[[paste0("ActionButton", i)]]}) == TRUE) 

를 사용하는 경우 그것은 그러나 나는 이전 버튼을 다시 한 번 클릭 가능하게하기 위해서 마지막으로 어느 알고 싶어, 나에게 클릭 한 모든 버튼을 보여줍니다. 어떻게해야합니까? 나는 반짝 반짝 빛이났다. 모든 반응/분리 문제를 이해한다면 확실하지 않으므로 어떤 힌트도 greateful이 될 것이다.

답변

3

당신은

smthing

$(document).on('click', '.needed', function() { 
           Shiny.onInputChange('last_btn',this.id); 
          }); 

예 (그렇지 제어하려는 경우 btn을하는 클래스 needed를 추가처럼 JS

을 추가하여 작업을 수행 할 수 있습니다

코드입니다 모두 btn)

ui <- shinyUI(fluidPage(

    titlePanel("Track last clicked Action button"), 
    tags$head(tags$script(HTML("$(document).on('click', '.needed', function() { 
           Shiny.onInputChange('last_btn',this.id); 
          });"))), 

    sidebarLayout(
    sidebarPanel(
     actionButton("first", "First",class="needed"), 
     actionButton("second", "Second",class="needed"), 
     actionButton("third", "Third",class="needed"), 
     actionButton("save", "save"), 
     selectInput("which_","which_",c("first","second","third")) 
    ), 

    mainPanel(

     textOutput("lastButtonCliked") 
    ) 
) 
)) 


server <- shinyServer(function(input, output,session) { 
    observeEvent(input$save,{ 
    updateSelectInput(session,"which_",selected = input$last_btn) 
    }) 
    output$lastButtonCliked=renderText({input$last_btn}) 

}) 
# Run the application 
shinyApp(ui = ui, server = server) 
+0

고마워요. selectInput 버튼에 현재 선택된 값을 저장하는 방법에 대해서도 설명 할 수 있습니까? selectInput 및 actionButton 'Save'가 있다고 가정합니다. 각각의 '저장'클릭에 대해 selectInput에 현재 선택된 값을 updateSelectInput으로 저장하려고합니다. 추가 할 수 있습니까? 원한다면 새로운 질문을 추가 할 수 있습니다. – user3463225

+0

업데이트 내용을 확인 하시겠습니까? – Batanichek

+0

정확하지는 않지만 selectInput에 = c (1 : 5), selected = 1, 선택한 값을 4로 변경하고 '저장'을 클릭하면 selectInput 버튼이 선택한 값을 4로 업데이트합니다. 마지막으로 선택한 값 '저장'버튼 전에) – user3463225

2

버튼을 마지막으로이 코드 트랙은 클릭 :

library(shiny) 


    ui <- shinyUI(fluidPage(


     titlePanel("Track last clicked Action button"), 


     sidebarLayout(
      sidebarPanel(
      actionButton("first", "First"), 
      actionButton("second", "Second"), 
      actionButton("third", "Third") 
     ), 

      # Show a plot of the generated distribution 
      mainPanel(
      textOutput("lastButtonCliked") 
     ) 
     ) 
    )) 


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

      rv <- reactiveValues(lastBtn = character()) 
      observeEvent(input$first, { 
        if (input$first > 0) { 
          rv$lastBtn = "first" 
        } 
      }) 
      observeEvent(input$second, { 
        if (input$second > 0) { 
          rv$lastBtn = "second" 
        } 
      }) 
      observeEvent(input$third, { 
        if (input$third > 0) { 
          rv$lastBtn = "third" 
        } 
      }) 
      output$lastButtonCliked <- renderText({ 
        paste("Last button clicked: ", rv$lastBtn) 
      }) 
    }) 
    # Run the application 
    shinyApp(ui = ui, server = server) 

버전을 lapply로 많은 버튼. 크레딧은 @ Victorp와 this answer으로 이동합니다.

library("shiny") 
    ui <- fluidPage(
      fluidRow(
        column(
          width = 6, 
          lapply(
            X = 1:5, 
            FUN = function(i) { 
              actionButton(inputId = paste0("button", i), label = paste("Button ", i)) 
            } 
          ) 
        ), 
        column(
          width = 6, 
          textOutput("lastButtonCliked") 
        ) 
      ) 
    ) 
    server <- function(input, output){ 

      rv <- reactiveValues(lastBtn = character()) 

      lapply(
        X = 1:6, 
        FUN = function(i){ 
          observeEvent(input[[paste0("button", i)]], { 
            if (input[[paste0("button", i)]] > 0) { 
              rv$lastBtn = paste0("button", i)  
            } 
          }) 
        } 
      ) 

      output$lastButtonCliked <- renderText({ 
        paste("Last button clicked: ", rv$lastBtn) 
      }) 
    } 
    shinyApp(ui = ui, server = server) 
+1

만약 내가 100 개의 액션 버튼을 가지고 있다면, 얼마나 많은 observeEvents를 작성 하는가? 버튼이 'button'+ X로 시작한다고 가정합니다. 여기서 X는 1에서 100까지입니다. – user3463225