onclick
runs an R expression (either a shinyjs
function or any other code)
when an element is clicked.onevent
is similar, but can be used when any event is triggered on the element,
not only a mouse click. See below for a list of possible event types. Using "click"
results in the same behaviour as calling onclick
.
This action can be reverted by calling removeEvent
.
onclick(id, expr, add = FALSE, asis = FALSE)
onevent(event, id, expr, add = FALSE, properties = NULL, asis = FALSE)
The id of the element/Shiny tag
The R expression or function to run after the event is triggered. If a function with an argument is provided, it will be called with the JavaScript Event properties as its argument. Using a function can be useful when you want to know, for example, what key was pressed on a "keypress" event or the mouse coordinates in a mouse event. See below for a list of properties.
If TRUE
, then add expr
to be executed after any
other code that was previously set using onevent
or onclick
; otherwise
expr
will overwrite any previous expressions. Note that this parameter
works well in web browsers but is buggy when using the RStudio Viewer.
If TRUE
, use the ID as-is even when inside a module
(instead of adding the namespace prefix to the ID).
The event that needs to be triggered to run the code. See below for a list of event types.
A list of JavaScript Event properties that should be available
to the argument of the expr
function. See below for more information about
Event properties.
An ID that can be used by removeEvent
to remove
the event listener. See removeEvent
for more details.
shinyjs
must be initialized with a call to useShinyjs()
in the app's ui.
Any standard mouse or
keyboard events
that are supported by JQuery can be used. The standard list of events that can be used is:
click
, dblclick
, hover
, mousedown
, mouseenter
,
mouseleave
, mousemove
, mouseout
, mouseover
, mouseup
,
keydown
, keypress
, keyup
. You can also use any other non
standard events that your browser supports or with the use of plugins (for
example, there is a mousewheel
plugin that you can use to listen to mousewheel events).
If a function is provided to expr
, the function will receive a list
of JavaScript Event properties describing the current event as an argument.
Different properties are available for different event types. The full list
of properties that can be returned is: altKey
, button
,
buttons
, clientX
, clientY
, ctrlKey
, pageX
,
pageY
, screenX
, screenY
, shiftKey
, which
,
charCode
, key
, keyCode
, offsetX
, offsetY
.
If you want to retrieve any additional properties that are available in
JavaScript for your event type, you can use the properties
parameter.
if (interactive()) {
library(shiny)
shinyApp(
ui = fluidPage(
useShinyjs(), # Set up shinyjs
p(id = "date", "Click me to see the date"),
p(id = "coords", "Click me to see the mouse coordinates"),
p(id = "disappear", "Move your mouse here to make the text below disappear"),
p(id = "text", "Hello")
),
server = function(input, output) {
onclick("date", alert(date()))
onclick("coords", function(event) { alert(event) })
onevent("mouseenter", "disappear", hide("text"))
onevent("mouseleave", "disappear", show("text"))
}
)
}
if (FALSE) {
# The shinyjs function call in the above app can be replaced by
# any of the following examples to produce similar Shiny apps
onclick("disappear", toggle("text"))
onclick(expr = text("date", date()), id = "date")
}