Set up a shiny::observeEvent()
observer to trigger when the named input
loses focus.
Usage
on_blur(
id,
handler_expr,
...,
priority = 99999,
session = shiny::getDefaultReactiveDomain()
)
Arguments
- id
The ID string of an input.
- handler_expr
The expression to trigger whenever the specified input loses focus. This expression is quoted and executed in the calling environment.
- ...
Arguments passed on to
shiny::observeEvent
label
A label for the observer or reactive, useful for debugging.
suspended
If
TRUE
, start the observer in a suspended state. IfFALSE
(the default), start in a non-suspended state.autoDestroy
If
TRUE
(the default), the observer will be automatically destroyed when its domain (if any) ends.ignoreNULL
Whether the action should be triggered (or value calculated, in the case of
eventReactive
) when the input event expression isNULL
. See Details.once
Whether this
observeEvent
should be immediately destroyed after the first time that the code inhandlerExpr
is run. This pattern is useful when you want to subscribe to a event that should only happen once.
- priority
An integer that controls the priority with which the observer should be executed. It often makes sense for this priority to be very high to avoid conflicts.
- session
The session (aka domain) in which the observer will be created and executed. The default is almost always desired.
Value
A shiny observer (see shiny::observe()
).
See also
Other observers:
on_focus_change()
,
on_focus()
Examples
## Only run examples in interactive R sessions
if (interactive()) {
# App 1: A relatively simple ui without modules.
shiny::shinyApp(
ui = shiny::fluidPage(
shinyfocus_js_dependency(),
shiny::textInput("input1", "Input 1"),
shiny::textInput("input2", "Input 2"),
shiny::actionButton("go_button", "Go!"),
shiny::textOutput("blurring")
),
server = function(input, output, session) {
# Update the value in blurring whenever input1 loses focus.
on_blur(
"input1",
output$blurring <- shiny::renderText(
paste(
"You left input1 at",
Sys.time()
)
)
)
}
)
# App 2: With module.
blurUI <- function(id) {
shiny::tagList(
shiny::textInput(shiny::NS(id, "observe_me"), "Observe me"),
shiny::textOutput(NS(id, "blurring"))
)
}
blurServer <- function(id) {
shiny::moduleServer(id, function(input, output, session) {
on_blur(
"observe_me",
output$blurring <- shiny::renderText(
paste(
"You left observe_me at",
Sys.time()
)
)
)
})
}
shiny::shinyApp(
ui = shiny::fluidPage(
shinyfocus_js_dependency(),
blurUI("blur_module"),
shiny::textInput("another_input", "Another input"),
shiny::actionButton("go_button", "Go!")
),
server = function(input, output, session) {
blurServer("blur_module")
}
)
}