我有一个小问题。我已经尝试过很多研究,但我没有运气。有没有一种方法R-shiny必须捕获像按钮之类的元素的双击。双击R-shiny
6
A
回答
12
这是一种方法。关键是检测客户端的dblclick
事件(即ui),然后调用Shiny.onInputChange
来更新R变量的值,然后可以由服务器接收该值。
这是按钮被双击时发生的情况。
- 的值由1
- 递增该递增的值被用于更新可变
x
。 - 服务器检测到更改
x
- 服务器更新
textOutput
。
library(shiny) ui = bootstrapPage( tags$button(id = 'mybutton', 'button', class='btn btn-primary', value = 0), textOutput('x'), # when button is double clicked increase the value by one # and update the input variable x tags$script(" $('#mybutton').on('dblclick', function(){ var val = +this.value this.value = val + 1 Shiny.onInputChange('x', this.value) console.log(this.value) }) ") ) server = function(input, output, session){ output$x <- renderText({ input$x }) } runApp(list(ui = ui, server = server))
0
我基于下面的评论更新我的答案。在这里,我使用0.2秒的时间差的阈值来区分双时钟和常规点击。我在我的应用程序中使用稍微不同的方法我只需检查按钮被按下的次数是否可以被2整除。
library(shiny)
t1 <<- Sys.time()
ui =fluidPage(
actionButton("my_button", "Dont Touch it!"),
mainPanel(textOutput("x"))
)
server = function(input, output, session){
my_data <- reactive({
if(input$my_button == 0)
{
return()
}
if(input$my_button%%2!=0)
{
t1 <<- Sys.time()
}
if(input$my_button%%2==0 & (Sys.time() - t1 <= 0.2))
{
"You pushed the button twice!"
}
})
output$x <- renderText({my_data()})
}
runApp(list(ui = ui, server = server))
相关问题
- 1. 在RShiny
- 2. 双击/双击Angular2&ionic
- 3. 双[] - >双击[,]
- 4. Rshiny includeHTML()变灰
- 5. gshplot标签在Rshiny
- 6. Rshiny:重构代码
- 7. 在Rshiny,renderPlot和renderText
- 8. 使用actionButton在RShiny
- 9. 单击和双击
- 10. Corona:双击/单击
- 11. 拦截单击或双击鼠标 - 仅执行双击代码双击
- 12. 双击行为
- 13. 双击NSWindows?
- 14. 双击文件
- 15. ASP.NET listview双击
- 16. PyQt5:QPushButton双击?
- 17. 双击UIButton
- 18. jQuery ConnectedSortable双击
- 19. 双击excel 2016
- 20. 双击UINavigationController navigationBar?
- 21. 双击UITableViewCell
- 22. GestureOverlayView和双击
- 23. 双击事件
- 24. 双击webOS
- 25. 双击问题
- 26. 双击事件
- 27. PyGTK:双击CellRenderer
- 28. Icefaces RowSelector双击
- 29. 双击按钮
- 30. WPF ListBoxItem双击?
AFAIK两次单击不等于双击。 – Ramnath 2014-10-06 16:49:30
@Ramnath我已经更新了我的答案,包括“双击”的时间阈值, – 2014-10-06 17:05:59