2017-11-10 15 views
0

index.html의 버튼으로 생성 된 이벤트를 수신하는 올바른 방법은 무엇입니까 ?? index.html을에서 :Shiny.OnInputChange - R Shiny를 사용하여 버튼 이벤트 수신

< button class='btn btn-primary btn-custom w-md waves-effect waves-light' id='.loginButton' style='width: 20%' type='button' onclick='myFucntion()'>Log In< /button> 

     <script type = 'text/javascript'> 
function myFunction() { 
    document.getElementById('.loginButton').style.color = 'red'; 
Shiny.onInputChange('.loginButton',1) 
}</script> 

server.R에서 :

observeEvent(input$.loginButton,{print("YEAH")}) 

내가 아니라 버튼, 입력 필드와 함께 작동하도록 보인다.

+0

왜'''onclick'''가 좋을까요? https://www.rdocumentation.org/packages/shinyjs/versions/0.1.0/topics/onclick – amrrs

답변

0

Shiny.onInputChange을 사용하는 방법이 아닙니다. 아래는 그 예입니다. 또는 @ amrrs의 의견에서 제안한대로 shinyjs 패키지를 사용할 수 있습니다. JS 코드

library(shiny) 

jscode <- ' 
$("#loginbutton").on("click", function(){ 
    Shiny.onInputChange("buttonClicked", Math.random()); 
}) 
' 

ui <- fluidPage(
    actionButton("loginbutton", "Login"), 
    singleton(tags$script(HTML(jscode))) 
) 

server <- function(input, output){ 
    observeEvent(input$buttonClicked, { 
    print("YEAH") 
    }) 
} 

shinyApp(ui = ui, server = server) 

설명 : 버튼을 클릭하면, 그 값 input$buttonClickedMath.random() 걸린다.

Shiny.onInputChange에 대한 자세한 내용은 https://deanattali.com/blog/advanced-shiny-tips/#message-javascript-r을 참조하십시오.

+0

네, 그 접근 방식이 효과가있었습니다. 내가 가진 문제점은 기본적으로 버튼의 응답이 없다는 것입니다. 내 버튼 클래스에 _italic_ btn action-button _italic_을 삽입하여 수정했습니다. R이 actionButton 입력 만 받아들이는 것 같습니다 :) – Mihov